From 8b4e08540b80a30362fdfe5e580cd67e4c412490 Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Thu, 30 Oct 2025 09:26:53 +0000 Subject: [PATCH 01/18] feat: support arm constructors by requiring llvm arrays adds a new plc_llvm crate that wraps llvm c++ apis. The only api currently provided is to expose the init array flag. This ensures that the constructors created by the compiler are actually called in aarch64 architectures. --- .github/workflows/linux.yml | 7 +- .github/workflows/lit.yml | 9 +- Cargo.lock | 9 + Cargo.toml | 3 + compiler/plc_driver/src/cli.rs | 2 +- compiler/plc_driver/src/lib.rs | 3 +- compiler/plc_driver/src/pipelines.rs | 30 +-- ...al_files__external_file_function_call.snap | 5 +- ...ernal_files__external_file_global_var.snap | 5 +- ...n_different_locations_with_debug_info.snap | 2 +- ...files__multiple_files_with_debug_info.snap | 2 +- ...iles__multiple_source_files_generated.snap | 5 +- compiler/plc_llvm/Cargo.toml | 10 + compiler/plc_llvm/build.rs | 36 +++ compiler/plc_llvm/src/cpp/llvm_wrapper.cpp | 15 ++ compiler/plc_llvm/src/lib.rs | 31 +++ examples/construtors.st | 9 + scripts/linker/aarch64.script | 225 ----------------- scripts/linker/x86_64.script | 238 ------------------ src/codegen.rs | 21 +- src/codegen/generators/pou_generator.rs | 13 +- src/codegen/tests/debug_tests.rs | 34 +-- .../complex_initializers.rs | 60 ++--- src/codegen/tests/oop_tests.rs | 34 +-- src/codegen/tests/oop_tests/debug_tests.rs | 14 +- src/codegen/tests/oop_tests/super_tests.rs | 30 +-- src/codegen/tests/polymorphism.rs | 8 +- ...var_nested_struct_added_to_debug_info.snap | 2 +- ...global_var_struct_added_to_debug_info.snap | 2 +- src/tests/adr/initializer_functions_adr.rs | 16 +- ...__integration__cfc__ir__actions_debug.snap | 2 +- ...egration__cfc__ir__conditional_return.snap | 2 +- ...on__cfc__ir__conditional_return_debug.snap | 3 +- ...r__conditional_return_evaluating_true.snap | 2 +- ...tional_return_evaluating_true_negated.snap | 2 +- ...sts__integration__cfc__ir__jump_debug.snap | 3 +- ...on__cfc__ir__jump_to_label_with_false.snap | 3 +- ...ion__cfc__ir__jump_to_label_with_true.snap | 3 +- ...tegration__cfc__ir__sink_source_debug.snap | 3 +- ...ble_source_to_variable_and_block_sink.snap | 3 +- ...line_compile__ir_generation_full_pass.snap | 3 +- tests/lit/.gitignore | 1 + tests/lit/lit.cfg | 2 +- tests/lit/multi/constructors/plc.json | 14 ++ tests/lit/multi/constructors/run.test | 2 + tests/lit/multi/constructors/src/base.st | 11 + tests/lit/multi/constructors/src/child.st | 4 + tests/lit/multi/constructors/src/main.st | 10 + .../lit/multi/multi_lib/lib1/include/base.pli | 9 + tests/lit/multi/multi_lib/lib1/plc.json | 11 + tests/lit/multi/multi_lib/lib1/src/base.st | 11 + tests/lit/multi/multi_lib/lib2/child.st | 4 + tests/lit/multi/multi_lib/lib2/main.st | 10 + tests/lit/multi/multi_lib/lib2/plc.json | 21 ++ tests/lit/multi/multi_lib/lit.local.cfg | 9 + tests/lit/multi/multi_lib/run.test | 2 + .../single/address/hardware_reference_used.st | 2 - tests/lit/single/address/reference_in_body.st | 4 +- 58 files changed, 393 insertions(+), 643 deletions(-) create mode 100644 compiler/plc_llvm/Cargo.toml create mode 100644 compiler/plc_llvm/build.rs create mode 100644 compiler/plc_llvm/src/cpp/llvm_wrapper.cpp create mode 100644 compiler/plc_llvm/src/lib.rs create mode 100644 examples/construtors.st delete mode 100644 scripts/linker/aarch64.script delete mode 100644 scripts/linker/x86_64.script create mode 100644 tests/lit/.gitignore create mode 100644 tests/lit/multi/constructors/plc.json create mode 100644 tests/lit/multi/constructors/run.test create mode 100644 tests/lit/multi/constructors/src/base.st create mode 100644 tests/lit/multi/constructors/src/child.st create mode 100644 tests/lit/multi/constructors/src/main.st create mode 100644 tests/lit/multi/multi_lib/lib1/include/base.pli create mode 100644 tests/lit/multi/multi_lib/lib1/plc.json create mode 100644 tests/lit/multi/multi_lib/lib1/src/base.st create mode 100644 tests/lit/multi/multi_lib/lib2/child.st create mode 100644 tests/lit/multi/multi_lib/lib2/main.st create mode 100644 tests/lit/multi/multi_lib/lib2/plc.json create mode 100644 tests/lit/multi/multi_lib/lit.local.cfg create mode 100644 tests/lit/multi/multi_lib/run.test diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 7c03d7bf857..e1bdf8df736 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -26,7 +26,12 @@ jobs: test-linux: name: Test Linux - runs-on: ubuntu-latest + runs-on: ${{ matrix.config.os }} + strategy: + matrix: + config: + - { os: "ubuntu-latest" } + - { os: "ubuntu-24.04-arm" } container: ghcr.io/plc-lang/rust-llvm:latest steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/lit.yml b/.github/workflows/lit.yml index 4858e5864b4..48f822c935b 100644 --- a/.github/workflows/lit.yml +++ b/.github/workflows/lit.yml @@ -12,7 +12,12 @@ on: jobs: lit-linux-debug: name: lit tests (Linux, debug build) - runs-on: ubuntu-latest + runs-on: ${{ matrix.config.os }} + strategy: + matrix: + config: + - { os: "ubuntu-latest" } + - { os: "ubuntu-24.04-arm" } container: ghcr.io/plc-lang/rust-llvm:latest steps: - uses: actions/checkout@v3 @@ -32,4 +37,4 @@ jobs: - name: Run `build.sh --lit --release` shell: bash run: | - ./scripts/build.sh --lit --release \ No newline at end of file + ./scripts/build.sh --lit --release diff --git a/Cargo.lock b/Cargo.lock index 35426fc3aac..020fe979a9c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2947,6 +2947,14 @@ dependencies = [ "rustc-hash", ] +[[package]] +name = "plc_llvm" +version = "0.1.0" +dependencies = [ + "cc", + "inkwell", +] + [[package]] name = "plc_lowering" version = "0.1.0" @@ -3478,6 +3486,7 @@ dependencies = [ "plc_diagnostics", "plc_driver", "plc_index", + "plc_llvm", "plc_project", "plc_source", "plc_util", diff --git a/Cargo.toml b/Cargo.toml index 07249bc3e8e..33f387a8271 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,6 +23,7 @@ plc_util = { path = "./compiler/plc_util" } plc_diagnostics = { path = "./compiler/plc_diagnostics" } plc_index = { path = "./compiler/plc_index" } section_mangler = { path = "./compiler/section_mangler" } +plc_llvm = { path = "./compiler/plc_llvm" } logos = "0.12.0" clap = { version = "3.0", features = ["derive"] } indexmap = "2.0" @@ -31,6 +32,7 @@ regex = "1" shell-words = "1.1.0" plc_derive = { path = "./compiler/plc_derive" } lld_rs = { git = "https://github.com/mun-lang/lld-rs", rev = "3798ace" } + which = "4.2.5" log.workspace = true inkwell.workspace = true @@ -79,6 +81,7 @@ members = [ "compiler/plc_index", "compiler/section_mangler", "compiler/plc_lowering", + "compiler/plc_llvm", "tests/test_utils", ] default-members = [".", "compiler/plc_driver", "compiler/plc_xml"] diff --git a/compiler/plc_driver/src/cli.rs b/compiler/plc_driver/src/cli.rs index 8a863cc6426..49dec510c60 100644 --- a/compiler/plc_driver/src/cli.rs +++ b/compiler/plc_driver/src/cli.rs @@ -120,9 +120,9 @@ pub struct CompileParameters { name = "no-linker-script", long, global = true, - group = "linker_script", help = "Specify that no linker script should be used" )] + #[deprecated = "Does nothing"] pub no_linker_script: bool, #[clap( diff --git a/compiler/plc_driver/src/lib.rs b/compiler/plc_driver/src/lib.rs index e6267a16377..1a84f9a1662 100644 --- a/compiler/plc_driver/src/lib.rs +++ b/compiler/plc_driver/src/lib.rs @@ -88,9 +88,10 @@ pub struct LinkOptions { #[derive(Clone, Default, Debug)] pub enum LinkerScript { - #[default] + #[deprecated = "No longer used, the default build script is enough"] Builtin, Path(String), + #[default] None, } diff --git a/compiler/plc_driver/src/pipelines.rs b/compiler/plc_driver/src/pipelines.rs index 7bc1b4b2096..59627e3f6d3 100644 --- a/compiler/plc_driver/src/pipelines.rs +++ b/compiler/plc_driver/src/pipelines.rs @@ -18,7 +18,6 @@ use ast::{ }; use itertools::Itertools; -use log::debug; use participant::{PipelineParticipant, PipelineParticipantMut}; use plc::{ codegen::{CodegenContext, GeneratedModule}, @@ -51,7 +50,6 @@ use rayon::prelude::*; use source_code::{source_location::SourceLocation, SourceContainer}; use serde_json; -use tempfile::NamedTempFile; use toml; pub mod participant; @@ -203,11 +201,7 @@ impl BuildPipeline { library_paths.extend_from_slice(self.project.get_library_paths()); //Get the specified linker script or load the default linker script in a temp file - let linker_script = if params.no_linker_script { - LinkerScript::None - } else { - params.linker_script.clone().map(LinkerScript::Path).unwrap_or_default() - }; + let linker_script = params.linker_script.clone().map(LinkerScript::Path).unwrap_or_default(); LinkOptions { libraries, @@ -982,29 +976,11 @@ impl GeneratedProject { //HACK: Create a temp file that would contain the bultin linker script //FIXME: This has to be done regardless if the file is used or not because it has //to be in scope by the time we call the linker - let mut file = NamedTempFile::new()?; match link_options.linker_script { - LinkerScript::Builtin => { - let target = self.target.get_target_triple().to_string(); - //Only do this on linux systems - if target.contains("linux") { - if target.contains("x86_64") { - let content = include_str!("../../../scripts/linker/x86_64.script"); - writeln!(file, "{content}")?; - linker.set_linker_script(file.get_location_str().to_string()); - } else if target.contains("aarch64") { - let content = include_str!("../../../scripts/linker/aarch64.script"); - writeln!(file, "{content}")?; - linker.set_linker_script(file.get_location_str().to_string()); - } else { - debug!("No script for target : {target}"); - } - } else { - debug!("No script for target : {target}"); - } - } LinkerScript::Path(script) => linker.set_linker_script(script), LinkerScript::None => {} + #[allow(deprecated)] + LinkerScript::Builtin => {} }; match link_options.format { diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap index 8cdd30a2d1e..6fdb6408946 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap @@ -1,7 +1,6 @@ --- -source: compiler/plc_driver/./src/tests/external_files.rs +source: compiler/plc_driver/src/tests/external_files.rs expression: "results.join(\"\\n\")" -snapshot_kind: text --- ; ModuleID = 'main.st' source_filename = "main.st" @@ -31,7 +30,7 @@ source_filename = "__init___TestProject" target datalayout = "[filtered]" target triple = "[filtered]" -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___TestProject, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___TestProject, i8* null }] define void @__init___TestProject() { entry: diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap index e22e906de82..c622b2b3284 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap @@ -1,7 +1,6 @@ --- -source: compiler/plc_driver/./src/tests/external_files.rs +source: compiler/plc_driver/src/tests/external_files.rs expression: "results.join(\"\\n\")" -snapshot_kind: text --- ; ModuleID = 'main.st' source_filename = "main.st" @@ -39,7 +38,7 @@ source_filename = "__init___TestProject" target datalayout = "[filtered]" target triple = "[filtered]" -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___TestProject, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___TestProject, i8* null }] define void @__init___TestProject() { entry: diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap index 57e8c660916..b78b744b3f1 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap @@ -123,7 +123,7 @@ target triple = "[filtered]" %mainProg = type {} @mainProg_instance = external global %mainProg -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___TestProject, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___TestProject, i8* null }] define void @__init___TestProject() { entry: diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap index b7153843aae..f95dd7c6a38 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap @@ -123,7 +123,7 @@ target triple = "[filtered]" %mainProg = type {} @mainProg_instance = external global %mainProg -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___TestProject, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___TestProject, i8* null }] define void @__init___TestProject() { entry: diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap index f5949e19cf4..d773cc7dab7 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap @@ -1,7 +1,6 @@ --- -source: compiler/plc_driver/./src/tests/multi_files.rs +source: compiler/plc_driver/src/tests/multi_files.rs expression: "results.join(\"\\n\")" -snapshot_kind: text --- ; ModuleID = 'external_file1.st' source_filename = "external_file1.st" @@ -70,7 +69,7 @@ target triple = "[filtered]" %mainProg = type {} @mainProg_instance = external global %mainProg -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___TestProject, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___TestProject, i8* null }] define void @__init___TestProject() { entry: diff --git a/compiler/plc_llvm/Cargo.toml b/compiler/plc_llvm/Cargo.toml new file mode 100644 index 00000000000..5413a00463e --- /dev/null +++ b/compiler/plc_llvm/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "plc_llvm" +version = "0.1.0" +edition = "2024" + +[dependencies] +inkwell.workspace = true + +[build-dependencies] +cc = "1.0" diff --git a/compiler/plc_llvm/build.rs b/compiler/plc_llvm/build.rs new file mode 100644 index 00000000000..c098b17c92e --- /dev/null +++ b/compiler/plc_llvm/build.rs @@ -0,0 +1,36 @@ +fn main() { + let llvm_config = if is_os("windows") { + "llvm-config.exe".to_string() + } else { + std::env::var("LLVM_CONFIG").unwrap_or_else(|_| "llvm-config-14".to_string()) + }; + + let cxxflags = String::from_utf8( + std::process::Command::new(&llvm_config) + .arg("--cxxflags") + .output() + .expect("Failed to run llvm-config") + .stdout, + ) + .expect("Invalid UTF-8"); + + let mut build = cc::Build::new(); + build.cpp(true).file("src/cpp/llvm_wrapper.cpp").flag("-std=c++14"); + + for flag in cxxflags.split_whitespace() { + if flag.starts_with("-I") || flag.starts_with("-D") { + build.flag(flag); + } + } + + build.compile("llvm_wrapper"); + + println!("cargo:rerun-if-changed=src/cpp/llvm_wrapper.cpp"); +} + +fn is_os(os: &str) -> bool { + match std::env::var_os("CARGO_CFG_TARGET_OS") { + Some(target_os) => target_os == os, + None => false, + } +} diff --git a/compiler/plc_llvm/src/cpp/llvm_wrapper.cpp b/compiler/plc_llvm/src/cpp/llvm_wrapper.cpp new file mode 100644 index 00000000000..e20a481e8c4 --- /dev/null +++ b/compiler/plc_llvm/src/cpp/llvm_wrapper.cpp @@ -0,0 +1,15 @@ +#include +#include +#include + +using namespace llvm; + +// Expose a C interface to set the options on the target machine +extern "C" { + + // Set the init array option in TargetOptions + void setUseInitArray(TargetMachine* tm, bool useInitArray) { + TargetOptions* options = &tm->Options; + options->UseInitArray = useInitArray ? 1 : 0; + } +} diff --git a/compiler/plc_llvm/src/lib.rs b/compiler/plc_llvm/src/lib.rs new file mode 100644 index 00000000000..cb1a66d0ddb --- /dev/null +++ b/compiler/plc_llvm/src/lib.rs @@ -0,0 +1,31 @@ +//! This crate provides Rust bindings for LLVM Target Machine functionalities. + +use inkwell::targets::TargetMachine; + +mod ffi { + use inkwell::llvm_sys::target_machine::LLVMTargetMachineRef; + + #[link(name = "llvm_wrapper")] + unsafe extern "C" { + pub fn setUseInitArray(tm: LLVMTargetMachineRef, use_init_array: bool); + } +} + +pub trait TargetMachineExt { + fn use_init_array(&mut self, use_init_array: bool); +} + +impl TargetMachineExt for TargetMachine { + /// Set whether to use `.init_array` and `.fini_array` sections for global + /// constructors and destructors instead of the legacy `.ctors` and `.dtors` + /// sections. + /// + /// By default, LLVM uses `.ctors` and `.dtors` sections. This method allows + /// changing that behavior. + fn use_init_array(&mut self, use_init_array: bool) { + let tm = self.as_mut_ptr(); + unsafe { + ffi::setUseInitArray(tm, use_init_array); + } + } +} diff --git a/examples/construtors.st b/examples/construtors.st new file mode 100644 index 00000000000..dbee398da43 --- /dev/null +++ b/examples/construtors.st @@ -0,0 +1,9 @@ +VAR_GLOBAL + x : DINT := 5; + y : REFERENCE TO DINT := x; +END_VAR + +FUNCTION main : DINT + main := x + y; +END_FUNCTION + diff --git a/scripts/linker/aarch64.script b/scripts/linker/aarch64.script deleted file mode 100644 index 385898af334..00000000000 --- a/scripts/linker/aarch64.script +++ /dev/null @@ -1,225 +0,0 @@ -/* Script for -pie -z combreloc -z relro -z now */ -/* Copyright (C) 2014-2024 Free Software Foundation, Inc. - Copying and distribution of this script, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. */ -OUTPUT_FORMAT("elf64-littleaarch64", "elf64-bigaarch64", - "elf64-littleaarch64") -OUTPUT_ARCH(aarch64) -ENTRY(_start) -SEARCH_DIR("=/usr/local/lib/aarch64-linux-gnu"); SEARCH_DIR("=/lib/aarch64-linux-gnu"); SEARCH_DIR("=/usr/lib/aarch64-linux-gnu"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/aarch64-linux-gnu/lib"); -SECTIONS -{ - /* Read-only sections, merged into text segment: */ - PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; - .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } - .hash : { *(.hash) } - .gnu.hash : { *(.gnu.hash) } - .dynsym : { *(.dynsym) } - .dynstr : { *(.dynstr) } - .gnu.version : { *(.gnu.version) } - .gnu.version_d : { *(.gnu.version_d) } - .gnu.version_r : { *(.gnu.version_r) } - .rela.dyn : - { - *(.rela.init) - *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) - *(.rela.fini) - *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) - *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) - *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) - *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) - *(.rela.ctors) - *(.rela.dtors) - *(.rela.got) - *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) - *(.rela.ifunc) - } - .rela.plt : - { - *(.rela.plt) - *(.rela.iplt) - } - .init : - { - KEEP (*(SORT_NONE(.init))) - } =0x1f2003d5 - .plt : ALIGN(16) { *(.plt) *(.iplt) } - .text : - { - *(.text.unlikely .text.*_unlikely .text.unlikely.*) - *(.text.exit .text.exit.*) - *(.text.startup .text.startup.*) - *(.text.hot .text.hot.*) - *(SORT(.text.sorted.*)) - *(.text .stub .text.* .gnu.linkonce.t.*) - /* .gnu.warning sections are handled specially by elf.em. */ - *(.gnu.warning) - } =0x1f2003d5 - .fini : - { - KEEP (*(SORT_NONE(.fini))) - } =0x1f2003d5 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } - .rodata1 : { *(.rodata1) } - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } - .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } - .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } - /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } - /* Adjust the address for the data segment. We want to adjust up to - the same address within the page on the next page up. */ - . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); - /* Exception handling */ - .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } - .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } - .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } - /* Thread Local Storage sections */ - .tdata : - { - PROVIDE_HIDDEN (__tdata_start = .); - *(.tdata .tdata.* .gnu.linkonce.td.*) - } - .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : - { - PROVIDE_HIDDEN (__preinit_array_start = .); - KEEP (*(.preinit_array)) - PROVIDE_HIDDEN (__preinit_array_end = .); - } - .init_array : - { - PROVIDE_HIDDEN (__init_array_start = .); - KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) - KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) - PROVIDE_HIDDEN (__init_array_end = .); - } - .fini_array : - { - PROVIDE_HIDDEN (__fini_array_start = .); - KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) - KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) - PROVIDE_HIDDEN (__fini_array_end = .); - } - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*crtbegin?.o(.ctors)) - /* We don't want to include the .ctor section from - the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } - .dtors : - { - KEEP (*crtbegin.o(.dtors)) - KEEP (*crtbegin?.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } - .jcr : { KEEP (*(.jcr)) } - .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } - .dynamic : { *(.dynamic) } - .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } - . = DATA_SEGMENT_RELRO_END (0, .); - .data : - { - PROVIDE (__data_start = .); - *(.data .data.* .gnu.linkonce.d.*) - SORT(CONSTRUCTORS) - } - .data1 : { *(.data1) } - _edata = .; PROVIDE (edata = .); - /*. = ALIGN(ALIGNOF(NEXT_SECTION));*/ - __bss_start = .; - __bss_start__ = .; - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we do not - pad the .data section. */ - . = ALIGN(. != 0 ? 64 / 8 : 1); - } - _bss_end__ = .; __bss_end__ = .; - . = ALIGN(64 / 8); - . = SEGMENT_START("ldata-segment", .); - . = ALIGN(64 / 8); - __end__ = .; - _end = .; PROVIDE (end = .); - . = DATA_SEGMENT_END (.); - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 (INFO) : { *(.comment); LINKER_VERSION; } - .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1. */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions. */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2. */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2. */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions. */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - /* DWARF 3. */ - .debug_pubtypes 0 : { *(.debug_pubtypes) } - .debug_ranges 0 : { *(.debug_ranges) } - /* DWARF 5. */ - .debug_addr 0 : { *(.debug_addr) } - .debug_line_str 0 : { *(.debug_line_str) } - .debug_loclists 0 : { *(.debug_loclists) } - .debug_macro 0 : { *(.debug_macro) } - .debug_names 0 : { *(.debug_names) } - .debug_rnglists 0 : { *(.debug_rnglists) } - .debug_str_offsets 0 : { *(.debug_str_offsets) } - .debug_sup 0 : { *(.debug_sup) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) KEEP (*(.gnu.attributes)) } - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } -} diff --git a/scripts/linker/x86_64.script b/scripts/linker/x86_64.script deleted file mode 100644 index 3a867f2a882..00000000000 --- a/scripts/linker/x86_64.script +++ /dev/null @@ -1,238 +0,0 @@ -/* Script for -shared -z combreloc -z separate-code */ -/* Copyright (C) 2014-2023 Free Software Foundation, Inc. - Copying and distribution of this script, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. */ -OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", - "elf64-x86-64") -OUTPUT_ARCH(i386:x86-64) -ENTRY(_start) -SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib"); -SECTIONS -{ - . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; - .note.gnu.build-id : { *(.note.gnu.build-id) } - .hash : { *(.hash) } - .gnu.hash : { *(.gnu.hash) } - .dynsym : { *(.dynsym) } - .dynstr : { *(.dynstr) } - .gnu.version : { *(.gnu.version) } - .gnu.version_d : { *(.gnu.version_d) } - .gnu.version_r : { *(.gnu.version_r) } - .rela.dyn : - { - *(.rela.init) - *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) - *(.rela.fini) - *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) - *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) - *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) - *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) - *(.rela.ctors) - *(.rela.dtors) - *(.rela.got) - *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) - *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) - *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) - *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) - *(.rela.ifunc) - } - .rela.plt : - { - *(.rela.plt) - *(.rela.iplt) - } - .relr.dyn : { *(.relr.dyn) } - . = ALIGN(CONSTANT (MAXPAGESIZE)); - .init : - { - KEEP (*(SORT_NONE(.init))) - } - .plt : { *(.plt) *(.iplt) } -.plt.got : { *(.plt.got) } -.plt.sec : { *(.plt.sec) } - .text : - { - *(.text.unlikely .text.*_unlikely .text.unlikely.*) - *(.text.exit .text.exit.*) - *(.text.startup .text.startup.*) - *(.text.hot .text.hot.*) - *(SORT(.text.sorted.*)) - *(.text .stub .text.* .gnu.linkonce.t.*) - /* .gnu.warning sections are handled specially by elf.em. */ - *(.gnu.warning) - } - .fini : - { - KEEP (*(SORT_NONE(.fini))) - } - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - . = ALIGN(CONSTANT (MAXPAGESIZE)); - /* Adjust the address for the rodata segment. We want to adjust up to - the same address within the page on the next page up. */ - . = SEGMENT_START("rodata-segment", ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1))); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } - .rodata1 : { *(.rodata1) } - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } - .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .sframe : ONLY_IF_RO { *(.sframe) *(.sframe.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } - .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } - /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } - /* Adjust the address for the data segment. We want to adjust up to - the same address within the page on the next page up. */ - . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); - /* Exception handling */ - .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .sframe : ONLY_IF_RW { *(.sframe) *(.sframe.*) } - .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } - .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } - /* Thread Local Storage sections */ - .tdata : - { - *(.tdata .tdata.* .gnu.linkonce.td.*) - } - .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : - { - KEEP (*(.preinit_array)) - } - .init_array : - { - KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) - KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) - } - .fini_array : - { - KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) - KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) - } - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin.o(.ctors)) - KEEP (*crtbegin?.o(.ctors)) - /* We don't want to include the .ctor section from - the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } - .dtors : - { - KEEP (*crtbegin.o(.dtors)) - KEEP (*crtbegin?.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } - .jcr : { KEEP (*(.jcr)) } - .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } - .dynamic : { *(.dynamic) } - .got : { *(.got) *(.igot) } - . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .); - .got.plt : { *(.got.plt) *(.igot.plt) } - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - SORT(CONSTRUCTORS) - } - .data1 : { *(.data1) } - PROVIDE (_edata = .); PROVIDE (edata = .); - . = .; - PROVIDE (__bss_start = .); - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we do not - pad the .data section. */ - . = ALIGN(. != 0 ? 64 / 8 : 1); - } - .lbss : - { - *(.dynlbss) - *(.lbss .lbss.* .gnu.linkonce.lb.*) - *(LARGE_COMMON) - } - . = ALIGN(64 / 8); - . = SEGMENT_START("ldata-segment", .); - .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : - { - *(.lrodata .lrodata.* .gnu.linkonce.lr.*) - } - .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : - { - *(.ldata .ldata.* .gnu.linkonce.l.*) - . = ALIGN(. != 0 ? 64 / 8 : 1); - } - . = ALIGN(64 / 8); - PROVIDE (_end = .); PROVIDE (end = .); - . = DATA_SEGMENT_END (.); - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1. */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions. */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2. */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2. */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions. */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - /* DWARF 3. */ - .debug_pubtypes 0 : { *(.debug_pubtypes) } - .debug_ranges 0 : { *(.debug_ranges) } - /* DWARF 5. */ - .debug_addr 0 : { *(.debug_addr) } - .debug_line_str 0 : { *(.debug_line_str) } - .debug_loclists 0 : { *(.debug_loclists) } - .debug_macro 0 : { *(.debug_macro) } - .debug_names 0 : { *(.debug_names) } - .debug_rnglists 0 : { *(.debug_rnglists) } - .debug_str_offsets 0 : { *(.debug_str_offsets) } - .debug_sup 0 : { *(.debug_sup) } - .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) } -} diff --git a/src/codegen.rs b/src/codegen.rs index 6060e730a86..2efc8e33e45 100644 --- a/src/codegen.rs +++ b/src/codegen.rs @@ -45,6 +45,7 @@ use inkwell::{ }; use plc_ast::ast::{CompilationUnit, LinkageType}; use plc_diagnostics::diagnostics::Diagnostic; +use plc_llvm::TargetMachineExt; use plc_source::source_location::{FileMarker, SourceLocation}; mod debug; @@ -451,7 +452,7 @@ impl<'ink> GeneratedModule<'ink> { let triple = target.get_target_triple(); let target = inkwell::targets::Target::from_triple(&triple)?; - let machine = target + let mut machine = target .create_target_machine( &triple, //TODO : Add cpu features as optionals @@ -461,23 +462,19 @@ impl<'ink> GeneratedModule<'ink> { reloc, CodeModel::Default, ) - .ok_or_else(|| CodegenError::new("Cannot create target machine.", SourceLocation::undefined())); + .ok_or_else(|| CodegenError::new("Cannot create target machine.", SourceLocation::undefined()))?; + + machine.use_init_array(true); //Make sure all parents exist if let Some(parent) = output.parent() { std::fs::create_dir_all(parent)?; } ////Run the passes - machine - .and_then(|it| { - self.module - .run_passes(optimization_level.opt_params(), &it, PassBuilderOptions::create()) - .map_err(Into::into) - .and_then(|_| { - it.write_to_file(&self.module, FileType::Object, output.as_path()).map_err(Into::into) - }) - }) - .map(|_| output) + self.module + .run_passes(optimization_level.opt_params(), &machine, PassBuilderOptions::create()) + .and_then(|_| machine.write_to_file(&self.module, FileType::Object, output.as_path()))?; + Ok(output) } /// Persists a given LLVM module to a static object and saves the output. diff --git a/src/codegen/generators/pou_generator.rs b/src/codegen/generators/pou_generator.rs index 74a9b692767..d683b425722 100644 --- a/src/codegen/generators/pou_generator.rs +++ b/src/codegen/generators/pou_generator.rs @@ -350,9 +350,13 @@ impl<'ink, 'cg> PouGenerator<'ink, 'cg> { false, ); + // // How does this behave on windows? + // curr_f.set_section(Some(".text.startup")); + // curr_f.set_linkage(Linkage::Internal); + //Create an entry for the global constructor of the project let str_value = ctor_str.const_named_struct(&[ - self.llvm.context.i32_type().const_zero().as_basic_value_enum(), + self.llvm.context.i32_type().const_int(65535, false).as_basic_value_enum(), curr_f.as_global_value().as_basic_value_enum(), self.llvm.context.i8_type().ptr_type(AddressSpace::default()).const_zero().as_basic_value_enum(), ]); @@ -366,6 +370,13 @@ impl<'ink, 'cg> PouGenerator<'ink, 'cg> { global_ctors.set_initializer(&arr); global_ctors.set_linkage(Linkage::Appending); + + // let i8_ptr = self.llvm.context.i8_type().ptr_type(AddressSpace::default()); + // let used_array = + // i8_ptr.const_array(&[curr_f.as_global_value().as_pointer_value().const_cast(i8_ptr)]); + // let used = module.add_global(used_array.get_type(), None, "llvm.used"); + // used.set_initializer(&used_array); + // used.set_linkage(Linkage::Appending); Ok(()) } /// creates and returns all parameters for the given implementation diff --git a/src/codegen/tests/debug_tests.rs b/src/codegen/tests/debug_tests.rs index 3d925c2f88f..0a2d86fd3ee 100644 --- a/src/codegen/tests/debug_tests.rs +++ b/src/codegen/tests/debug_tests.rs @@ -224,7 +224,7 @@ fn switch_case_debug_info() { target datalayout = "[filtered]" target triple = "[filtered]" - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] define i32 @main() !dbg !4 { entry: @@ -360,7 +360,7 @@ fn dbg_declare_has_valid_metadata_references_for_methods() { %__vtable_fb = type { void (%fb*)*, void (%fb*)* } %fb = type { i32* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_fb__init = unnamed_addr constant %__vtable_fb zeroinitializer @__fb__init = unnamed_addr constant %fb zeroinitializer, !dbg !0 @__vtable_fb_instance = global %__vtable_fb zeroinitializer @@ -494,7 +494,7 @@ fn action_with_var_temp() { %PLC_PRG = type {} - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @PLC_PRG_instance = global %PLC_PRG zeroinitializer, !dbg !0 define i32 @main() !dbg !9 { @@ -645,7 +645,7 @@ END_FUNCTION ", ); - filtered_assert_snapshot!(result, @r###" + filtered_assert_snapshot!(result, @r#" ; ModuleID = '' source_filename = "" target datalayout = "[filtered]" @@ -657,7 +657,7 @@ END_FUNCTION @__struct___init = unnamed_addr constant %struct_ { %inner { [81 x i8] c"Hello\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i8 1, float 0x400921CAC0000000, [3 x [81 x i8]] [[81 x i8] c"aaaa\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"bbbb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"cccc\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"], i16 42 }, [3 x %inner] zeroinitializer, [81 x i8] c"Hello\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i8 1, float 0x400921CAC0000000, [3 x [81 x i8]] [[81 x i8] c"aa\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"bb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"cc\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"], i16 42 }, !dbg !0 @__inner__init = unnamed_addr constant %inner { [81 x i8] c"Hello\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i8 1, float 0x400921CAC0000000, [3 x [81 x i8]] [[81 x i8] c"aaaa\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"bbbb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"cccc\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"], i16 42 }, !dbg !32 @utf08_literal_0 = private unnamed_addr constant [6 x i8] c"Hello\00" - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] define void @main() !dbg !39 { entry: @@ -886,7 +886,7 @@ END_FUNCTION !63 = !DILocation(line: 42, column: 4, scope: !39) !64 = !DILocation(line: 43, column: 4, scope: !39) !65 = !DILocation(line: 45, scope: !39) - "###); + "#); } #[test] @@ -918,7 +918,7 @@ fn constants_are_tagged_as_such() { ", ); - filtered_assert_snapshot!(result, @r###" + filtered_assert_snapshot!(result, @r#" ; ModuleID = '' source_filename = "" target datalayout = "[filtered]" @@ -929,7 +929,7 @@ fn constants_are_tagged_as_such() { @x = unnamed_addr constant i32 0, !dbg !0 @s = unnamed_addr constant [81 x i8] zeroinitializer, !dbg !5 - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @prog_instance = global %prog zeroinitializer, !dbg !13 @__foo__init = unnamed_addr constant %foo zeroinitializer, !dbg !20 @f = unnamed_addr constant %foo zeroinitializer, !dbg !26 @@ -1046,7 +1046,7 @@ fn constants_are_tagged_as_such() { !43 = !DILocalVariable(name: "bar", scope: !38, file: !2, line: 19, type: !4, align: 32) !44 = !DILocation(line: 19, column: 17, scope: !38) !45 = !DILocation(line: 23, column: 8, scope: !38) - "###); + "#); } #[test] @@ -1079,7 +1079,7 @@ fn test_debug_info_regular_pointer_types() { @struct_ptr = global %myStruct* null, !dbg !13 @string_ptr = global [81 x i8]* null, !dbg !22 @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer, !dbg !31 - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] define void @__init_mystruct(%myStruct* %0) { entry: @@ -1177,7 +1177,7 @@ fn test_debug_info_auto_deref_parameters() { %test_with_ref_params = type { [81 x i8]*, [6 x i32]*, i32*, %myStruct*, i32* } %myStruct = type { i32, i8 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @test_with_ref_params_instance = global %test_with_ref_params zeroinitializer, !dbg !0 @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer, !dbg !34 @@ -1303,7 +1303,7 @@ fn test_debug_info_auto_deref_alias_pointers() { END_STRUCT END_TYPE "#, ); - filtered_assert_snapshot!(codegen, @r###" + filtered_assert_snapshot!(codegen, @r#" ; ModuleID = '' source_filename = "" target datalayout = "[filtered]" @@ -1311,7 +1311,7 @@ fn test_debug_info_auto_deref_alias_pointers() { %myStruct = type { i32, i8 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer, !dbg !0 @global_struct = global %myStruct zeroinitializer, !dbg !10 @global_var = global i32 42, !dbg !12 @@ -1370,7 +1370,7 @@ fn test_debug_info_auto_deref_alias_pointers() { !23 = !{i32 2, !"Debug Info Version", i32 3} !24 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !25, splitDebugInlining: false) !25 = !{!12, !14, !10, !0, !18} - "###) + "#) } #[test] @@ -1404,7 +1404,7 @@ fn test_debug_info_mixed_pointer_types() { %mixed_ptr = type { [81 x i8]*, i32*, i8*, i8* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @mixed_ptr_instance = global %mixed_ptr zeroinitializer, !dbg !0 @regular_ptr = global i32* null, !dbg !24 @alias_var = global i32** null, !dbg !28 @@ -1536,7 +1536,7 @@ fn test_debug_info_auto_deref_reference_to_pointers() { @array_reference = global [11 x i32]* null, !dbg !6 @struct_reference = global %myStruct* null, !dbg !13 @string_reference = global [81 x i8]* null, !dbg !22 - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @test_with_reference_params_instance = global %test_with_reference_params zeroinitializer, !dbg !31 @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer, !dbg !47 @@ -1678,7 +1678,7 @@ fn range_datatype_debug() { target datalayout = "[filtered]" target triple = "[filtered]" - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] define i32 @main() !dbg !4 { entry: diff --git a/src/codegen/tests/initialization_test/complex_initializers.rs b/src/codegen/tests/initialization_test/complex_initializers.rs index e77d1a97077..7920f21b063 100644 --- a/src/codegen/tests/initialization_test/complex_initializers.rs +++ b/src/codegen/tests/initialization_test/complex_initializers.rs @@ -23,7 +23,7 @@ fn simple_global() { target datalayout = "[filtered]" target triple = "[filtered]" - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @s = global [81 x i8] c"hello world!\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" @ps = global [81 x i8]* null @@ -56,7 +56,7 @@ fn global_alias() { target datalayout = "[filtered]" target triple = "[filtered]" - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @s = global [81 x i8] c"hello world!\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" @ps = global [81 x i8]* null @@ -89,7 +89,7 @@ fn global_reference_to() { target datalayout = "[filtered]" target triple = "[filtered]" - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @s = global [81 x i8] c"hello world!\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" @ps = global [81 x i8]* null @@ -130,7 +130,7 @@ fn init_functions_generated_for_programs() { %PLC_PRG = type { [81 x i8]* } @s = global [81 x i8] zeroinitializer - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @PLC_PRG_instance = global %PLC_PRG zeroinitializer define void @PLC_PRG(%PLC_PRG* %0) { @@ -279,7 +279,7 @@ fn init_functions_generated_for_function_blocks() { %foo = type { i32*, [81 x i8]* } @s = global [81 x i8] zeroinitializer - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -420,7 +420,7 @@ fn nested_initializer_pous() { %sideProg = type { [81 x i8]*, %foo } @str = global [81 x i8] c"hello\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @mainProg_instance = global %mainProg zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__bar__init = unnamed_addr constant %bar zeroinitializer @@ -717,7 +717,7 @@ fn local_address() { %__vtable_foo = type { void (%foo*)* } %foo = type { i32*, i16, i16* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -816,7 +816,7 @@ fn user_init_called_for_variables_on_stack() { %__vtable_foo = type { void (%foo*)*, void (%foo*)* } %foo = type { i32*, i16, i16* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -1009,7 +1009,7 @@ fn struct_types() { ) .unwrap(); - filtered_assert_snapshot!(res, @r###" + filtered_assert_snapshot!(res, @r#" ; ModuleID = '' source_filename = "" target datalayout = "[filtered]" @@ -1020,7 +1020,7 @@ fn struct_types() { @s = global [81 x i8] c"Hello world!\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00" @s2 = global [2 x [81 x i8]] [[81 x i8] c"hello\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"world\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"] - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @prog_instance = global %prog zeroinitializer @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer @@ -1076,7 +1076,7 @@ fn struct_types() { call void @__user_init_prog(%prog* @prog_instance) ret void } - "###); + "#); } #[test] @@ -1127,7 +1127,7 @@ fn stateful_pous_methods_and_structs_get_init_functions() { %cl = type { i32* } @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @prog_instance = global %prog zeroinitializer @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @@ -1318,7 +1318,7 @@ fn global_instance() { %__vtable_foo = type { void (%foo*)* } @ps = global [81 x i8] zeroinitializer - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @prog_instance = global %prog zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @@ -1445,7 +1445,7 @@ fn aliased_types() { %__vtable_foo = type { void (%foo*)* } @ps = global [81 x i8] zeroinitializer - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @prog_instance = global %prog zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @@ -1643,7 +1643,7 @@ fn var_config_aliased_variables_initialized() { %FB = type { i32*, i32* } %__vtable_FB = type { void (%FB*)* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @prog_instance = global %prog zeroinitializer @__FB__init = unnamed_addr constant %FB zeroinitializer @____vtable_FB__init = unnamed_addr constant %__vtable_FB zeroinitializer @@ -1781,7 +1781,7 @@ fn var_external_blocks_are_ignored_in_init_functions() { %__vtable_foo = type { void (%foo*)* } %foo = type { i32* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -1872,7 +1872,7 @@ fn ref_to_local_member() { %__vtable_foo = type { void (%foo*)* } %foo = type { i32*, [81 x i8], [81 x i8]*, [81 x i8]*, [81 x i8]* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -1979,7 +1979,7 @@ fn ref_to_local_member_shadows_global() { %foo = type { i32*, [81 x i8], [81 x i8]*, [81 x i8]*, [81 x i8]* } @s = global [81 x i8] zeroinitializer - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -2083,7 +2083,7 @@ fn temporary_variable_ref_to_local_member() { %__vtable_foo = type { void (%foo*)* } %foo = type { i32*, [81 x i8] } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -2175,7 +2175,7 @@ fn temporary_variable_ref_to_temporary_variable() { target datalayout = "[filtered]" target triple = "[filtered]" - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] define void @foo() { entry: @@ -2234,7 +2234,7 @@ fn initializing_method_variables_with_refs() { %__vtable_foo = type { void (%foo*)*, void (%foo*)* } %foo = type { i32* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -2336,7 +2336,7 @@ fn initializing_method_variables_with_refs_referencing_parent_pou_variable() { %__vtable_foo = type { void (%foo*)*, void (%foo*)* } %foo = type { i32*, i32 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo { i32* null, i32 5 } @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -2439,7 +2439,7 @@ fn initializing_method_variables_with_refs_referencing_global_variable() { %foo = type { i32* } @x = global i32 0 - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -2541,7 +2541,7 @@ fn initializing_method_variables_with_refs_shadowing() { %foo = type { i32* } @x = global i32 0 - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -2640,7 +2640,7 @@ fn initializing_method_variables_with_alias() { %__vtable_foo = type { void (%foo*)*, void (%foo*)* } %foo = type { i32* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -2739,7 +2739,7 @@ fn initializing_method_variables_with_reference_to() { %__vtable_foo = type { void (%foo*)*, void (%foo*)* } %foo = type { i32* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -2847,7 +2847,7 @@ fn methods_call_init_functions_for_their_members() { %__vtable_bar = type { void (%bar*)*, void (%bar*)* } %bar = type { i32* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -3016,7 +3016,7 @@ fn user_fb_init_is_added_and_called_if_it_exists() { %foo = type { i32*, i16, i16 } %__vtable_foo = type { void (%foo*)*, void (%foo*)* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @prog_instance = global %prog zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @@ -3170,7 +3170,7 @@ fn user_fb_init_in_global_struct() { %foo = type { i32*, i16, i16 } %__vtable_foo = type { void (%foo*)*, void (%foo*)* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @prog_instance = global %prog zeroinitializer @__bar__init = unnamed_addr constant %bar zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @@ -3337,7 +3337,7 @@ fn user_init_called_when_declared_as_external() { %foo = type { i32*, i16, i16 } %__vtable_foo = type { void (%foo*)*, void (%foo*)* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @prog_instance = global %prog zeroinitializer @__foo__init = external unnamed_addr constant %foo @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer diff --git a/src/codegen/tests/oop_tests.rs b/src/codegen/tests/oop_tests.rs index f8e84dc9a47..832abfa1ae6 100644 --- a/src/codegen/tests/oop_tests.rs +++ b/src/codegen/tests/oop_tests.rs @@ -30,7 +30,7 @@ fn members_from_base_class_are_available_in_subclasses() { %__vtable_bar = type { void (%bar*)* } %bar = type { %foo } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -179,7 +179,7 @@ fn write_to_parent_variable_qualified_access() { %__vtable_foo = type { void (%foo*)* } %foo = type { i32*, %fb2 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_fb__init = unnamed_addr constant %__vtable_fb zeroinitializer @__fb__init = unnamed_addr constant %fb zeroinitializer @__vtable_fb_instance = global %__vtable_fb zeroinitializer @@ -388,7 +388,7 @@ fn write_to_parent_variable_in_instance() { @utf08_literal_0 = private unnamed_addr constant [6 x i8] c"hello\00" @utf08_literal_1 = private unnamed_addr constant [6 x i8] c"world\00" - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -596,7 +596,7 @@ fn array_in_parent_generated() { %__vtable_child = type { void (%child*)* } %child = type { %parent, [11 x i16] } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_grandparent__init = unnamed_addr constant %__vtable_grandparent zeroinitializer @__grandparent__init = unnamed_addr constant %grandparent zeroinitializer @__vtable_grandparent_instance = global %__vtable_grandparent zeroinitializer @@ -843,7 +843,7 @@ fn complex_array_access_generated() { %__vtable_child = type { void (%child*)* } %child = type { %parent, [11 x i16] } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_grandparent__init = unnamed_addr constant %__vtable_grandparent zeroinitializer @__grandparent__init = unnamed_addr constant %grandparent zeroinitializer @__vtable_grandparent_instance = global %__vtable_grandparent zeroinitializer @@ -1111,7 +1111,7 @@ fn this_in_method_call_chain() { %__vtable_FB_Test = type { void (%FB_Test*)*, void (%FB_Test*)*, void (%FB_Test*)* } %FB_Test = type { i32* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_FB_Test__init = unnamed_addr constant %__vtable_FB_Test zeroinitializer @__FB_Test__init = unnamed_addr constant %FB_Test zeroinitializer @__vtable_FB_Test_instance = global %__vtable_FB_Test zeroinitializer @@ -1217,7 +1217,7 @@ fn this_in_method_and_body_in_function_block() { %__vtable_FB_Test = type { void (%FB_Test*)*, i16 (%FB_Test*)* } %FB_Test = type { i32*, i16 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_FB_Test__init = unnamed_addr constant %__vtable_FB_Test zeroinitializer @__FB_Test__init = unnamed_addr constant %FB_Test { i32* null, i16 5 } @__vtable_FB_Test_instance = global %__vtable_FB_Test zeroinitializer @@ -1340,7 +1340,7 @@ fn pass_this_to_method() { %FB_Test2 = type { i32* } %__vtable_FB_Test2 = type { void (%FB_Test2*)*, i16 (%FB_Test2*, %FB_Test*)* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_FB_Test__init = unnamed_addr constant %__vtable_FB_Test zeroinitializer @__FB_Test__init = unnamed_addr constant %FB_Test { i32* null, i16 5 } @__FB_Test2__init = unnamed_addr constant %FB_Test2 zeroinitializer @@ -1519,7 +1519,7 @@ fn this_with_shadowed_variable() { %__vtable_FB_Test = type { void (%FB_Test*)*, void (%FB_Test*)* } %FB_Test = type { i32*, i16 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_FB_Test__init = unnamed_addr constant %__vtable_FB_Test zeroinitializer @__FB_Test__init = unnamed_addr constant %FB_Test { i32* null, i16 5 } @__vtable_FB_Test_instance = global %__vtable_FB_Test zeroinitializer @@ -1627,7 +1627,7 @@ fn this_calling_function_and_passing_this() { %__vtable_FB_Test = type { void (%FB_Test*)* } %FB_Test = type { i32*, i16 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_FB_Test__init = unnamed_addr constant %__vtable_FB_Test zeroinitializer @__FB_Test__init = unnamed_addr constant %FB_Test zeroinitializer @__vtable_FB_Test_instance = global %__vtable_FB_Test zeroinitializer @@ -1733,7 +1733,7 @@ fn this_in_property_and_calling_method() { %__vtable_FB_Test = type { void (%FB_Test*)*, i16 (%FB_Test*)*, i16 (%FB_Test*)*, void (%FB_Test*, i16)* } %FB_Test = type { i32*, i16 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_FB_Test__init = unnamed_addr constant %__vtable_FB_Test zeroinitializer @__FB_Test__init = unnamed_addr constant %FB_Test zeroinitializer @__vtable_FB_Test_instance = global %__vtable_FB_Test zeroinitializer @@ -1878,7 +1878,7 @@ fn this_with_self_pointer() { %__vtable_FB_Test = type { void (%FB_Test*)*, void (%FB_Test*)* } %FB_Test = type { i32*, %FB_Test* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_FB_Test__init = unnamed_addr constant %__vtable_FB_Test zeroinitializer @__FB_Test__init = unnamed_addr constant %FB_Test zeroinitializer @__vtable_FB_Test_instance = global %__vtable_FB_Test zeroinitializer @@ -1977,7 +1977,7 @@ fn this_in_variable_initialization() { %__vtable_FB = type { void (%FB*)* } %FB = type { i32*, i16, %FB*, i16 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_FB__init = unnamed_addr constant %__vtable_FB zeroinitializer @__FB__init = unnamed_addr constant %FB { i32* null, i16 5, %FB* null, i16 5 } @__vtable_FB_instance = global %__vtable_FB zeroinitializer @@ -2057,7 +2057,7 @@ fn this_in_action_in_functionblock() { %__vtable_fb = type { void (%fb*)* } %fb = type { i32* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_fb__init = unnamed_addr constant %__vtable_fb zeroinitializer @__fb__init = unnamed_addr constant %fb zeroinitializer @__vtable_fb_instance = global %__vtable_fb zeroinitializer @@ -2143,7 +2143,7 @@ fn this_calling_functionblock_body_from_method() { %__vtable_fb = type { void (%fb*)*, i16 (%fb*)* } %fb = type { i32* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_fb__init = unnamed_addr constant %__vtable_fb zeroinitializer @__fb__init = unnamed_addr constant %fb zeroinitializer @__vtable_fb_instance = global %__vtable_fb zeroinitializer @@ -2249,7 +2249,7 @@ fn fb_extension_with_output() { %__vtable_foo2 = type { void (%foo2*)*, i16 (%foo*, i16, i16, i16*)* } %foo2 = type { %foo } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -2440,7 +2440,7 @@ fn function_with_output_used_in_main_by_extension() { %__vtable_foo2 = type { void (%foo2*)*, i16 (%foo*, i16, i16, i16*)* } %foo2 = type { %foo, i16 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer diff --git a/src/codegen/tests/oop_tests/debug_tests.rs b/src/codegen/tests/oop_tests/debug_tests.rs index 71235a31b43..bdada292c19 100644 --- a/src/codegen/tests/oop_tests/debug_tests.rs +++ b/src/codegen/tests/oop_tests/debug_tests.rs @@ -28,7 +28,7 @@ fn members_from_base_class_are_available_in_subclasses() { %__vtable_bar = type { void (%bar*)* } %bar = type { %foo } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer, !dbg !0 @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -231,7 +231,7 @@ fn write_to_parent_variable_qualified_access() { %__vtable_foo = type { void (%foo*)* } %foo = type { i32*, %fb2 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_fb__init = unnamed_addr constant %__vtable_fb zeroinitializer @__fb__init = unnamed_addr constant %fb zeroinitializer, !dbg !0 @__vtable_fb_instance = global %__vtable_fb zeroinitializer @@ -501,7 +501,7 @@ fn write_to_parent_variable_in_instance() { @utf08_literal_0 = private unnamed_addr constant [6 x i8] c"hello\00" @utf08_literal_1 = private unnamed_addr constant [6 x i8] c"world\00" - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer, !dbg !0 @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -775,7 +775,7 @@ fn array_in_parent_generated() { %__vtable_child = type { void (%child*)* } %child = type { %parent, [11 x i16] } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_grandparent__init = unnamed_addr constant %__vtable_grandparent zeroinitializer @__grandparent__init = unnamed_addr constant %grandparent zeroinitializer, !dbg !0 @__vtable_grandparent_instance = global %__vtable_grandparent zeroinitializer @@ -1100,7 +1100,7 @@ fn complex_array_access_generated() { %__vtable_child = type { void (%child*)* } %child = type { %parent, [11 x i16] } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_grandparent__init = unnamed_addr constant %__vtable_grandparent zeroinitializer @__grandparent__init = unnamed_addr constant %grandparent zeroinitializer, !dbg !0 @__vtable_grandparent_instance = global %__vtable_grandparent zeroinitializer @@ -1385,7 +1385,7 @@ fn function_block_method_debug_info() { %__vtable_bar = type { void (%bar*)*, void (%foo*)* } %bar = type { %foo } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer, !dbg !0 @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -1630,7 +1630,7 @@ END_FUNCTION %__vtable_grandchild = type { void (%grandchild*)* } %grandchild = type { %child, i32 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent zeroinitializer, !dbg !0 @__vtable_parent_instance = global %__vtable_parent zeroinitializer diff --git a/src/codegen/tests/oop_tests/super_tests.rs b/src/codegen/tests/oop_tests/super_tests.rs index 7ad6926fa82..bc64fd44717 100644 --- a/src/codegen/tests/oop_tests/super_tests.rs +++ b/src/codegen/tests/oop_tests/super_tests.rs @@ -28,7 +28,7 @@ fn super_keyword_basic_access() { %__vtable_child = type { void (%child*)* } %child = type { %parent } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, i16 10 } @__vtable_parent_instance = global %__vtable_parent zeroinitializer @@ -171,7 +171,7 @@ fn super_without_deref() { %__vtable_child = type { void (%child*)* } %child = type { %parent, %parent* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, i16 10 } @__vtable_parent_instance = global %__vtable_parent zeroinitializer @@ -321,7 +321,7 @@ fn super_in_method_calls() { %__vtable_child = type { void (%child*)*, i16 (%child*)*, i16 (%child*)* } %child = type { %parent } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, i16 10 } @__vtable_parent_instance = global %__vtable_parent zeroinitializer @@ -519,7 +519,7 @@ fn super_in_complex_expressions() { %__vtable_child = type { void (%child*)* } %child = type { %parent, i16 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, i16 10, i16 20 } @__vtable_parent_instance = global %__vtable_parent zeroinitializer @@ -673,7 +673,7 @@ fn super_with_array_access() { %child = type { %parent, i16 } @__parent.arr__init = unnamed_addr constant [6 x i16] [i16 1, i16 2, i16 3, i16 4, i16 5, i16 6] - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, [6 x i16] [i16 1, i16 2, i16 3, i16 4, i16 5, i16 6] } @__vtable_parent_instance = global %__vtable_parent zeroinitializer @@ -841,7 +841,7 @@ fn super_in_multi_level_inheritance() { %__vtable_child = type { void (%child*)*, i16 (%grandparent*)*, i16 (%parent*)*, i16 (%child*)* } %child = type { %parent, i16 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_grandparent__init = unnamed_addr constant %__vtable_grandparent zeroinitializer @__grandparent__init = unnamed_addr constant %grandparent { i32* null, i16 10 } @__vtable_grandparent_instance = global %__vtable_grandparent zeroinitializer @@ -1104,7 +1104,7 @@ fn super_with_pointer_operations() { %__vtable_child = type { void (%child*)* } %child = type { %parent } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, i16 10, i16* null } @__vtable_parent_instance = global %__vtable_parent zeroinitializer @@ -1267,7 +1267,7 @@ fn super_in_conditionals() { %__vtable_child = type { void (%child*)*, void (%child*)* } %child = type { %parent } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, i16 50, i16 10 } @__vtable_parent_instance = global %__vtable_parent zeroinitializer @@ -1463,7 +1463,7 @@ fn super_with_const_variables() { %__vtable_child = type { void (%child*)* } %child = type { %parent } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, i16 100, i16 50 } @__vtable_parent_instance = global %__vtable_parent zeroinitializer @@ -1621,7 +1621,7 @@ fn super_as_function_parameter() { %__vtable_child = type { void (%child*)*, void (%child*)* } %child = type { %parent } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, i16 10 } @__vtable_parent_instance = global %__vtable_parent zeroinitializer @@ -1812,7 +1812,7 @@ fn super_with_deeply_nested_expressions() { %__vtable_child = type { void (%child*)*, i16 (%parent*)*, i16 (%child*)* } %child = type { %parent } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, i16 1, i16 2, i16 3 } @__vtable_parent_instance = global %__vtable_parent zeroinitializer @@ -2044,7 +2044,7 @@ fn super_in_loop_constructs() { %child = type { %parent } @__parent.arr__init = unnamed_addr constant [6 x i16] [i16 1, i16 2, i16 3, i16 4, i16 5, i16 6] - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, i16 0, [6 x i16] [i16 1, i16 2, i16 3, i16 4, i16 5, i16 6] } @__vtable_parent_instance = global %__vtable_parent zeroinitializer @@ -2328,7 +2328,7 @@ fn super_with_method_overrides_in_three_levels() { %__vtable_child = type { void (%child*)*, i16 (%child*)* } %child = type { %parent } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_grandparent__init = unnamed_addr constant %__vtable_grandparent zeroinitializer @__grandparent__init = unnamed_addr constant %grandparent zeroinitializer @__vtable_grandparent_instance = global %__vtable_grandparent zeroinitializer @@ -2639,7 +2639,7 @@ fn super_with_structured_types() { @__parent.data__init = unnamed_addr constant %Complex_Type { i16 10, i16 20, float 3.050000e+01 } @__parent.arr_data__init = unnamed_addr constant [2 x %Complex_Type] [%Complex_Type { i16 1, i16 2, float 3.500000e+00 }, %Complex_Type { i16 4, i16 5, float 6.500000e+00 }] - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, %Complex_Type { i16 10, i16 20, float 3.050000e+01 }, [2 x %Complex_Type] [%Complex_Type { i16 1, i16 2, float 3.500000e+00 }, %Complex_Type { i16 4, i16 5, float 6.500000e+00 }] } @__Complex_Type__init = unnamed_addr constant %Complex_Type zeroinitializer @@ -2858,7 +2858,7 @@ fn super_in_action_blocks() { %__vtable_child = type { void (%child*)*, void (%parent*)* } %child = type { %parent } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_parent__init = unnamed_addr constant %__vtable_parent zeroinitializer @__parent__init = unnamed_addr constant %parent { i32* null, i16 10 } @__vtable_parent_instance = global %__vtable_parent zeroinitializer diff --git a/src/codegen/tests/polymorphism.rs b/src/codegen/tests/polymorphism.rs index 223b0b810cf..ef2d4d9d9ee 100644 --- a/src/codegen/tests/polymorphism.rs +++ b/src/codegen/tests/polymorphism.rs @@ -56,7 +56,7 @@ fn simple_overridden_method() { %__vtable_B = type { void (%B*)*, i16 (%B*, i32)* } %B = type { %A, i16, i16 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_A__init = unnamed_addr constant %__vtable_A zeroinitializer @__A__init = unnamed_addr constant %A zeroinitializer @__vtable_A_instance = global %__vtable_A zeroinitializer @@ -276,7 +276,7 @@ fn method_call_within_method() { %__vtable_A = type { void (%A*)*, i16 (%A*, i32)*, void (%A*)* } %A = type { i32* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_A__init = unnamed_addr constant %__vtable_A zeroinitializer @__A__init = unnamed_addr constant %A zeroinitializer @__vtable_A_instance = global %__vtable_A zeroinitializer @@ -419,7 +419,7 @@ fn this_is_untouched() { %__vtable_C = type { void (%C*)*, i16 (%C*, i32)*, void (%C*)* } %C = type { %A } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_A__init = unnamed_addr constant %__vtable_A zeroinitializer @__A__init = unnamed_addr constant %A zeroinitializer @__vtable_A_instance = global %__vtable_A zeroinitializer @@ -703,7 +703,7 @@ fn super_is_untouched() { %__vtable_B = type { void (%B*)*, i16 (%B*, i32)*, void (%B*)* } %B = type { %A } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_A__init = unnamed_addr constant %__vtable_A zeroinitializer @__A__init = unnamed_addr constant %A zeroinitializer @__vtable_A_instance = global %__vtable_A zeroinitializer diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap index ce5f64fa6d0..6fe7d773967 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap @@ -10,7 +10,7 @@ target triple = "[filtered]" %myStruct = type { i32, %myStruct2 } %myStruct2 = type { i32, double } -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer, !dbg !0 @__myStruct2__init = unnamed_addr constant %myStruct2 zeroinitializer, !dbg !14 @gStruct = global %myStruct zeroinitializer, !dbg !17 diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap index 3e6044abdc9..c331905c234 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap @@ -10,7 +10,7 @@ target triple = "[filtered]" %myStruct = type { i32, double, [11 x i32] } @b = global [11 x %myStruct] zeroinitializer, !dbg !0 -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer, !dbg !14 @gStruct = global %myStruct zeroinitializer, !dbg !17 diff --git a/src/tests/adr/initializer_functions_adr.rs b/src/tests/adr/initializer_functions_adr.rs index 956271e2af5..82aac474dfd 100644 --- a/src/tests/adr/initializer_functions_adr.rs +++ b/src/tests/adr/initializer_functions_adr.rs @@ -657,7 +657,7 @@ fn generating_init_functions() { "; let res = generate_to_string("Test", vec![SourceCode::from(src)]).unwrap(); - filtered_assert_snapshot!(res, @r###" + filtered_assert_snapshot!(res, @r#" ; ModuleID = '' source_filename = "" target datalayout = "[filtered]" @@ -668,7 +668,7 @@ fn generating_init_functions() { @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer @__myRefStruct__init = unnamed_addr constant %myRefStruct zeroinitializer - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] define void @__init_mystruct(%myStruct* %0) { entry: @@ -702,7 +702,7 @@ fn generating_init_functions() { entry: ret void } - "###); + "#); // The second example shows how each initializer function delegates member-initialization to the respective member-init-function // The wrapping init function contains a single call-statement to `__init_baz`, since `baz` is the only global instance in need of @@ -751,7 +751,7 @@ fn generating_init_functions() { %__vtable_foo = type { void (%foo*)* } %__vtable_bar = type { void (%bar*)* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @baz_instance = global %baz zeroinitializer @__bar__init = unnamed_addr constant %bar zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @@ -956,7 +956,7 @@ fn intializing_temporary_variables() { @ps2 = global [81 x i8] zeroinitializer @ps = global [81 x i8] zeroinitializer - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -1073,7 +1073,7 @@ fn initializing_method_variables() { %__vtable_foo = type { void (%foo*)*, void (%foo*)* } %foo = type { i32* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo zeroinitializer @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -1181,7 +1181,7 @@ fn initializing_method_variables() { %foo = type { i32*, i32 } @y = global i32 0 - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo { i32* null, i32 5 } @__vtable_foo_instance = global %__vtable_foo zeroinitializer @@ -1293,7 +1293,7 @@ fn initializing_method_variables() { %__vtable_foo = type { void (%foo*)*, void (%foo*)* } %foo = type { i32*, i32 } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }] + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__foo__init = unnamed_addr constant %foo { i32* null, i32 5 } @__vtable_foo_instance = global %__vtable_foo zeroinitializer diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap index 9c379db6637..63647abd3b0 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap @@ -6,7 +6,7 @@ target triple = "[filtered]" %main = type { i32, i32 } -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___plc, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___plc, i8* null }] @main_instance = global %main zeroinitializer, !dbg !0 define void @main(%main* %0) !dbg !12 { diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return.snap b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return.snap index 00cde4aeb9c..c084a257c06 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return.snap @@ -7,7 +7,7 @@ target triple = "[filtered]" %__vtable_conditional_return = type { void (%conditional_return*)* } %conditional_return = type { i32*, i32 } -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___plc, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___plc, i8* null }] @____vtable_conditional_return__init = unnamed_addr constant %__vtable_conditional_return zeroinitializer @__conditional_return__init = unnamed_addr constant %conditional_return zeroinitializer @__vtable_conditional_return_instance = global %__vtable_conditional_return zeroinitializer diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap index 09ce6001209..c6713c2852e 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap @@ -1,11 +1,10 @@ --- source: tests/integration/cfc.rs expression: output_file_content_without_headers -snapshot_kind: text --- target triple = "[filtered]" -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___plc, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___plc, i8* null }] define i32 @foo(i32 %0) !dbg !4 { entry: diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true.snap b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true.snap index caba3519446..16095b6fc7a 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true.snap @@ -7,7 +7,7 @@ target triple = "[filtered]" %__vtable_conditional_return = type { void (%conditional_return*)* } %conditional_return = type { i32*, i32 } -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___plc, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___plc, i8* null }] @____vtable_conditional_return__init = unnamed_addr constant %__vtable_conditional_return zeroinitializer @__conditional_return__init = unnamed_addr constant %conditional_return zeroinitializer @__vtable_conditional_return_instance = global %__vtable_conditional_return zeroinitializer diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true_negated.snap b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true_negated.snap index 57a6a546d0e..67b64413edb 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true_negated.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true_negated.snap @@ -7,7 +7,7 @@ target triple = "[filtered]" %__vtable_conditional_return = type { void (%conditional_return*)* } %conditional_return = type { i32*, i32 } -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___plc, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___plc, i8* null }] @____vtable_conditional_return__init = unnamed_addr constant %__vtable_conditional_return zeroinitializer @__conditional_return__init = unnamed_addr constant %conditional_return zeroinitializer @__vtable_conditional_return_instance = global %__vtable_conditional_return zeroinitializer diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap index 5079d6481e2..ac7e3657eba 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap @@ -1,13 +1,12 @@ --- source: tests/integration/cfc.rs expression: output_file_content_without_headers -snapshot_kind: text --- target triple = "[filtered]" %foo = type { i32 } -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___plc, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___plc, i8* null }] @foo_instance = global %foo zeroinitializer, !dbg !0 define void @foo(%foo* %0) !dbg !11 { diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_false.snap b/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_false.snap index 8703789d524..b7334b1fcd0 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_false.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_false.snap @@ -1,11 +1,10 @@ --- source: tests/integration/cfc.rs expression: output_file_content_without_headers -snapshot_kind: text --- target triple = "[filtered]" -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___plc, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___plc, i8* null }] define i32 @main() { entry: diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_true.snap b/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_true.snap index c5fa1c00a80..153360236d1 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_true.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_true.snap @@ -1,11 +1,10 @@ --- source: tests/integration/cfc.rs expression: output_file_content_without_headers -snapshot_kind: text --- target triple = "[filtered]" -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___plc, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___plc, i8* null }] define i32 @main() { entry: diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap index fb480bfabf9..9ca9d3ee7a1 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap @@ -1,13 +1,12 @@ --- source: tests/integration/cfc.rs expression: output_file_content_without_headers -snapshot_kind: text --- target triple = "[filtered]" %main = type { i32 } -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___plc, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___plc, i8* null }] @main_instance = global %main zeroinitializer, !dbg !0 define void @main(%main* %0) !dbg !11 { diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__variable_source_to_variable_and_block_sink.snap b/tests/integration/snapshots/tests__integration__cfc__ir__variable_source_to_variable_and_block_sink.snap index ba1b24a31e2..42d65715419 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__variable_source_to_variable_and_block_sink.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__variable_source_to_variable_and_block_sink.snap @@ -1,11 +1,10 @@ --- source: tests/integration/cfc.rs expression: output_file_content_without_headers -snapshot_kind: text --- target triple = "[filtered]" -@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___plc, i8* null }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___plc, i8* null }] define i32 @main() { entry: diff --git a/tests/integration/snapshots/tests__integration__command_line_compile__ir_generation_full_pass.snap b/tests/integration/snapshots/tests__integration__command_line_compile__ir_generation_full_pass.snap index f151ac3254d..ad6093b76be 100644 --- a/tests/integration/snapshots/tests__integration__command_line_compile__ir_generation_full_pass.snap +++ b/tests/integration/snapshots/tests__integration__command_line_compile__ir_generation_full_pass.snap @@ -1,6 +1,5 @@ --- source: tests/integration/command_line_compile.rs expression: content -snapshot_kind: text --- -target datalayout = "[filtered]"@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___command_line_st, i8* null }]define void @__init___command_line_st() {entry: ret void}define i32 @myFunc(i32 %0, i32 %1, i32 %2) {entry: %myFunc = alloca i32, align 4 %a = alloca i32, align 4 store i32 %0, i32* %a, align 4 %b = alloca i32, align 4 store i32 %1, i32* %b, align 4 %c = alloca i32, align 4 store i32 %2, i32* %c, align 4 store i32 0, i32* %myFunc, align 4 %myFunc_ret = load i32, i32* %myFunc, align 4 ret i32 %myFunc_ret} +target datalayout = "[filtered]"@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___command_line_st, i8* null }]define void @__init___command_line_st() {entry: ret void}define i32 @myFunc(i32 %0, i32 %1, i32 %2) {entry: %myFunc = alloca i32, align 4 %a = alloca i32, align 4 store i32 %0, i32* %a, align 4 %b = alloca i32, align 4 store i32 %1, i32* %b, align 4 %c = alloca i32, align 4 store i32 %2, i32* %c, align 4 store i32 0, i32* %myFunc, align 4 %myFunc_ret = load i32, i32* %myFunc, align 4 ret i32 %myFunc_ret} diff --git a/tests/lit/.gitignore b/tests/lit/.gitignore new file mode 100644 index 00000000000..567609b1234 --- /dev/null +++ b/tests/lit/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/tests/lit/lit.cfg b/tests/lit/lit.cfg index 6b07c4aa42a..00478edf5fc 100644 --- a/tests/lit/lit.cfg +++ b/tests/lit/lit.cfg @@ -17,4 +17,4 @@ print(f'Compile command: {compile}') config.substitutions.append(('%COMPILE', f'{compile}')) config.substitutions.append(('%RUN', f'LD_LIBRARY_PATH="{stdlibLocation}/lib" /tmp/%basename_t.out')) -config.substitutions.append(('%CHECK', f'FileCheck-14 --check-prefixes CHECK --allow-unused-prefixes --match-full-lines')) \ No newline at end of file +config.substitutions.append(('%CHECK', f'FileCheck-14 --check-prefixes CHECK --allow-unused-prefixes --match-full-lines')) diff --git a/tests/lit/multi/constructors/plc.json b/tests/lit/multi/constructors/plc.json new file mode 100644 index 00000000000..ec7b7c35acf --- /dev/null +++ b/tests/lit/multi/constructors/plc.json @@ -0,0 +1,14 @@ +{ + "name" : "Application", + "files" : [ + "src/child.st", + "src/main.st", + "src/base.st", + "../../util/printf.pli" + ], + "compile_type" : "Static", + "output" : "app", + "libraries" : [ + ] +} + diff --git a/tests/lit/multi/constructors/run.test b/tests/lit/multi/constructors/run.test new file mode 100644 index 00000000000..ae42ba30538 --- /dev/null +++ b/tests/lit/multi/constructors/run.test @@ -0,0 +1,2 @@ +RUN: %COMPILE build plc.json && %RUN | %CHECK %s +CHECK: 36 diff --git a/tests/lit/multi/constructors/src/base.st b/tests/lit/multi/constructors/src/base.st new file mode 100644 index 00000000000..5662d0cdb0b --- /dev/null +++ b/tests/lit/multi/constructors/src/base.st @@ -0,0 +1,11 @@ +FUNCTION_BLOCK baseFb + VAR_OUTPUT + x : DINT; + y : REFERENCE TO DINT REF= x; + END_VAR + + METHOD FB_INIT + THIS^.x := 10; + THIS^.y := THIS^.x + 1; //x and y are 11 + END_METHOD +END_FUNCTION_BLOCK diff --git a/tests/lit/multi/constructors/src/child.st b/tests/lit/multi/constructors/src/child.st new file mode 100644 index 00000000000..45b6d2b75ff --- /dev/null +++ b/tests/lit/multi/constructors/src/child.st @@ -0,0 +1,4 @@ +FUNCTION_BLOCK child EXTENDS baseFb + THIS^.x := This^.x + 5; // x is now 16 + THIS^.y := THIS^.y + 2; // y is now 18 +END_FUNCTION_BLOCK diff --git a/tests/lit/multi/constructors/src/main.st b/tests/lit/multi/constructors/src/main.st new file mode 100644 index 00000000000..9d4512c8c68 --- /dev/null +++ b/tests/lit/multi/constructors/src/main.st @@ -0,0 +1,10 @@ +VAR_GLOBAL + childInst : child; +END_VAR + + +FUNCTION main : DINT + childInst(); + main := childInst.y + childInst.x; // Should be 36 (18 + 18) + printf('%d$N', main); +END_FUNCTION diff --git a/tests/lit/multi/multi_lib/lib1/include/base.pli b/tests/lit/multi/multi_lib/lib1/include/base.pli new file mode 100644 index 00000000000..8ad81717bd9 --- /dev/null +++ b/tests/lit/multi/multi_lib/lib1/include/base.pli @@ -0,0 +1,9 @@ +FUNCTION_BLOCK baseFb + VAR_OUTPUT + x : DINT; + y : REFERENCE TO DINT; + END_VAR + + METHOD FB_INIT + END_METHOD +END_FUNCTION_BLOCK diff --git a/tests/lit/multi/multi_lib/lib1/plc.json b/tests/lit/multi/multi_lib/lib1/plc.json new file mode 100644 index 00000000000..a1070197772 --- /dev/null +++ b/tests/lit/multi/multi_lib/lib1/plc.json @@ -0,0 +1,11 @@ +{ + "name" : "parentLib", + "files" : [ + "./src/base.st" + ], + "output": "libparent.so", + "compile_type" : "Shared", + "libraries" : [ + ] +} + diff --git a/tests/lit/multi/multi_lib/lib1/src/base.st b/tests/lit/multi/multi_lib/lib1/src/base.st new file mode 100644 index 00000000000..5662d0cdb0b --- /dev/null +++ b/tests/lit/multi/multi_lib/lib1/src/base.st @@ -0,0 +1,11 @@ +FUNCTION_BLOCK baseFb + VAR_OUTPUT + x : DINT; + y : REFERENCE TO DINT REF= x; + END_VAR + + METHOD FB_INIT + THIS^.x := 10; + THIS^.y := THIS^.x + 1; //x and y are 11 + END_METHOD +END_FUNCTION_BLOCK diff --git a/tests/lit/multi/multi_lib/lib2/child.st b/tests/lit/multi/multi_lib/lib2/child.st new file mode 100644 index 00000000000..45b6d2b75ff --- /dev/null +++ b/tests/lit/multi/multi_lib/lib2/child.st @@ -0,0 +1,4 @@ +FUNCTION_BLOCK child EXTENDS baseFb + THIS^.x := This^.x + 5; // x is now 16 + THIS^.y := THIS^.y + 2; // y is now 18 +END_FUNCTION_BLOCK diff --git a/tests/lit/multi/multi_lib/lib2/main.st b/tests/lit/multi/multi_lib/lib2/main.st new file mode 100644 index 00000000000..9d4512c8c68 --- /dev/null +++ b/tests/lit/multi/multi_lib/lib2/main.st @@ -0,0 +1,10 @@ +VAR_GLOBAL + childInst : child; +END_VAR + + +FUNCTION main : DINT + childInst(); + main := childInst.y + childInst.x; // Should be 36 (18 + 18) + printf('%d$N', main); +END_FUNCTION diff --git a/tests/lit/multi/multi_lib/lib2/plc.json b/tests/lit/multi/multi_lib/lib2/plc.json new file mode 100644 index 00000000000..5b608058d27 --- /dev/null +++ b/tests/lit/multi/multi_lib/lib2/plc.json @@ -0,0 +1,21 @@ +{ + "name" : "Application", + "files" : [ + "child.st", + "main.st", + "../../../util/printf.pli" + ], + "compile_type" : "Static", + "output" : "app", + "libraries" : [ + { + "name": "parent", + "path": "../build/", + "package": "System", + "include_path" : [ + "../lib1/include/base.pli" + ] + } + ] +} + diff --git a/tests/lit/multi/multi_lib/lit.local.cfg b/tests/lit/multi/multi_lib/lit.local.cfg new file mode 100644 index 00000000000..9c900a62956 --- /dev/null +++ b/tests/lit/multi/multi_lib/lit.local.cfg @@ -0,0 +1,9 @@ +stdlibLocation = lit_config.params["LIB"] +compilerLocation = lit_config.params["COMPILER"] +# Add a substitution for a lib compile command +libCompile = f'{compilerLocation} build' +libCompile = f'{libCompile} --linker=cc' +print(f'Lib Compile command: {libCompile}') + +config.substitutions.append(('%LIBCOMPILE', f'{libCompile}')) +config.substitutions.append(('%APPRUN', f'LD_LIBRARY_PATH="{stdlibLocation}/lib:./build" /tmp/%basename_t.out')) diff --git a/tests/lit/multi/multi_lib/run.test b/tests/lit/multi/multi_lib/run.test new file mode 100644 index 00000000000..c00d688302c --- /dev/null +++ b/tests/lit/multi/multi_lib/run.test @@ -0,0 +1,2 @@ +RUN: %LIBCOMPILE lib1/plc.json && %COMPILE build lib2/plc.json && %APPRUN | %CHECK %s +CHECK: 36 diff --git a/tests/lit/single/address/hardware_reference_used.st b/tests/lit/single/address/hardware_reference_used.st index 4d8d38b666f..156069b04b9 100755 --- a/tests/lit/single/address/hardware_reference_used.st +++ b/tests/lit/single/address/hardware_reference_used.st @@ -7,8 +7,6 @@ VAR_GLOBAL END_VAR FUNCTION main : DINT - __init___hardware_reference_used_st(); - a := TRUE; printf('%u$N', a); //CHECK: 1 b := TRUE; diff --git a/tests/lit/single/address/reference_in_body.st b/tests/lit/single/address/reference_in_body.st index 1be406842c1..c9f2ae86e94 100755 --- a/tests/lit/single/address/reference_in_body.st +++ b/tests/lit/single/address/reference_in_body.st @@ -7,8 +7,6 @@ VAR_GLOBAL END_VAR FUNCTION main : DINT - __init___reference_in_body_st(); - %IX1.2.1 := TRUE; printf('%u$N', a); //CHECK: 1 b := TRUE; @@ -17,4 +15,4 @@ FUNCTION main : DINT printf('%d$N', c); //CHECK: 1337 d := 98765; printf('%d$N', %QX1.2.4); //CHECK: 98765 -END_FUNCTION \ No newline at end of file +END_FUNCTION From 0e1b31e0db6388a1703d64f430c6b9212bc18ede Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Tue, 25 Nov 2025 07:20:37 +0100 Subject: [PATCH 02/18] ignore the multilib for this branch, it is fixed in a subsequent PR --- tests/lit/multi/multi_lib/{run.test => run.test.ignore} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/lit/multi/multi_lib/{run.test => run.test.ignore} (100%) diff --git a/tests/lit/multi/multi_lib/run.test b/tests/lit/multi/multi_lib/run.test.ignore similarity index 100% rename from tests/lit/multi/multi_lib/run.test rename to tests/lit/multi/multi_lib/run.test.ignore From 59aca336a97aa8b57f346140abed5eecb0b75e5d Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Tue, 25 Nov 2025 07:41:25 +0100 Subject: [PATCH 03/18] change the main method on some test from i16 to i32 for easier tests on aarch64 --- compiler/plc_driver/src/tests/external_files.rs | 10 +++++----- compiler/plc_driver/src/tests/multi_files.rs | 8 ++++---- ...ernal_files__external_file_function_call.snap | 16 ++++++++-------- ...external_files__external_file_global_var.snap | 16 ++++++++-------- ...s_in_different_locations_with_debug_info.snap | 16 ++++++++-------- ...ti_files__multiple_files_with_debug_info.snap | 16 ++++++++-------- ...i_files__multiple_source_files_generated.snap | 10 +++++----- compiler/plc_llvm/build.rs | 10 +++++++++- 8 files changed, 55 insertions(+), 47 deletions(-) diff --git a/compiler/plc_driver/src/tests/external_files.rs b/compiler/plc_driver/src/tests/external_files.rs index 82326cfdaec..f89b0aa884b 100644 --- a/compiler/plc_driver/src/tests/external_files.rs +++ b/compiler/plc_driver/src/tests/external_files.rs @@ -9,7 +9,7 @@ fn external_file_function_call() { //Given a program calling a function from an external file let prog = SourceCode::new( " - FUNCTION main : INT + FUNCTION main : DINT external(); END_FUNCTION ", @@ -18,7 +18,7 @@ fn external_file_function_call() { let ext = SourceCode::new( " - FUNCTION external : INT + FUNCTION external : DINT END_FUNCTION ", "external.st", @@ -34,7 +34,7 @@ fn external_file_global_var() { //Given a program calling a function from an external file let prog = SourceCode::new( " - FUNCTION main : INT + FUNCTION main : DINT x := 2; y := 2; external(); @@ -48,7 +48,7 @@ fn external_file_global_var() { VAR_GLOBAL x : INT; END_VAR - FUNCTION external : INT + FUNCTION external : DINT END_FUNCTION VAR_GLOBAL y : INT; @@ -67,7 +67,7 @@ fn calling_external_file_function_without_including_file_results_in_error() { //Given a program calling a function from an external file let prog = SourceCode::new( " - FUNCTION main : INT + FUNCTION main : DINT external(); END_FUNCTION ", diff --git a/compiler/plc_driver/src/tests/multi_files.rs b/compiler/plc_driver/src/tests/multi_files.rs index b3ee19bd3f5..d2d2a1a29fc 100644 --- a/compiler/plc_driver/src/tests/multi_files.rs +++ b/compiler/plc_driver/src/tests/multi_files.rs @@ -9,7 +9,7 @@ fn multiple_source_files_generated() { //Given 2 sources let src1 = SourceCode::new( " - FUNCTION main : INT + FUNCTION main : DINT VAR_INPUT END_VAR @@ -45,7 +45,7 @@ fn multiple_files_with_debug_info() { //Given 2 sources let src1: SourceCode = SourceCode::new( " - FUNCTION main : INT + FUNCTION main : DINT VAR_INPUT END_VAR @@ -84,7 +84,7 @@ fn multiple_files_in_different_locations_with_debug_info() { //Given 2 sources let src1: SourceCode = SourceCode::new( " - FUNCTION main : INT + FUNCTION main : DINT VAR_INPUT END_VAR @@ -125,7 +125,7 @@ fn forward_declared_constant_is_also_marked_constant() { // and the other with the definition of that constant. let src1 = SourceCode::new( " - FUNCTION main : INT + FUNCTION main : DINT VAR f: foo; END_VAR diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap index 6fdb6408946..eaeb3215870 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap @@ -7,23 +7,23 @@ source_filename = "main.st" target datalayout = "[filtered]" target triple = "[filtered]" -define i16 @main() { +define i32 @main() { entry: - %main = alloca i16, align 2 - store i16 0, i16* %main, align 2 - %call = call i16 @external() - %main_ret = load i16, i16* %main, align 2 - ret i16 %main_ret + %main = alloca i32, align 4 + store i32 0, i32* %main, align 4 + %call = call i32 @external() + %main_ret = load i32, i32* %main, align 4 + ret i32 %main_ret } -declare i16 @external() +declare i32 @external() ; ModuleID = 'external.st' source_filename = "external.st" target datalayout = "[filtered]" target triple = "[filtered]" -declare i16 @external() +declare i32 @external() ; ModuleID = '__init___TestProject' source_filename = "__init___TestProject" diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap index c622b2b3284..f877aef2731 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap @@ -10,18 +10,18 @@ target triple = "[filtered]" @x = external global i16 @y = external global i16 -define i16 @main() { +define i32 @main() { entry: - %main = alloca i16, align 2 - store i16 0, i16* %main, align 2 + %main = alloca i32, align 4 + store i32 0, i32* %main, align 4 store i16 2, i16* @x, align 2 store i16 2, i16* @y, align 2 - %call = call i16 @external() - %main_ret = load i16, i16* %main, align 2 - ret i16 %main_ret + %call = call i32 @external() + %main_ret = load i32, i32* %main, align 4 + ret i32 %main_ret } -declare i16 @external() +declare i32 @external() ; ModuleID = 'external.st' source_filename = "external.st" @@ -31,7 +31,7 @@ target triple = "[filtered]" @x = external global i16 @y = external global i16 -declare i16 @external() +declare i32 @external() ; ModuleID = '__init___TestProject' source_filename = "__init___TestProject" diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap index b78b744b3f1..5b8ed54a86e 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap @@ -11,14 +11,14 @@ target triple = "[filtered]" @mainProg_instance = external global %mainProg -define i16 @main() !dbg !4 { +define i32 @main() !dbg !4 { entry: - %main = alloca i16, align 2 - call void @llvm.dbg.declare(metadata i16* %main, metadata !9, metadata !DIExpression()), !dbg !11 - store i16 0, i16* %main, align 2 + %main = alloca i32, align 4 + call void @llvm.dbg.declare(metadata i32* %main, metadata !9, metadata !DIExpression()), !dbg !11 + store i32 0, i32* %main, align 4 call void @mainProg(%mainProg* @mainProg_instance), !dbg !12 - %main_ret = load i16, i16* %main, align 2, !dbg !13 - ret i16 %main_ret, !dbg !13 + %main_ret = load i32, i32* %main, align 4, !dbg !13 + ret i32 %main_ret, !dbg !13 } declare !dbg !14 void @mainProg(%mainProg*) @@ -40,8 +40,8 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "main", scope: !4, file: !5, line: 2, type: !10, align: 16) -!10 = !DIBasicType(name: "INT", size: 16, encoding: DW_ATE_signed, flags: DIFlagPublic) +!9 = !DILocalVariable(name: "main", scope: !4, file: !5, line: 2, type: !10, align: 32) +!10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 13, scope: !4) !12 = !DILocation(line: 10, column: 4, scope: !4) !13 = !DILocation(line: 11, column: 4, scope: !4) diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap index f95dd7c6a38..76b714ab856 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap @@ -11,14 +11,14 @@ target triple = "[filtered]" @mainProg_instance = external global %mainProg -define i16 @main() !dbg !4 { +define i32 @main() !dbg !4 { entry: - %main = alloca i16, align 2 - call void @llvm.dbg.declare(metadata i16* %main, metadata !9, metadata !DIExpression()), !dbg !11 - store i16 0, i16* %main, align 2 + %main = alloca i32, align 4 + call void @llvm.dbg.declare(metadata i32* %main, metadata !9, metadata !DIExpression()), !dbg !11 + store i32 0, i32* %main, align 4 call void @mainProg(%mainProg* @mainProg_instance), !dbg !12 - %main_ret = load i16, i16* %main, align 2, !dbg !13 - ret i16 %main_ret, !dbg !13 + %main_ret = load i32, i32* %main, align 4, !dbg !13 + ret i32 %main_ret, !dbg !13 } declare !dbg !14 void @mainProg(%mainProg*) @@ -40,8 +40,8 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "main", scope: !4, file: !5, line: 2, type: !10, align: 16) -!10 = !DIBasicType(name: "INT", size: 16, encoding: DW_ATE_signed, flags: DIFlagPublic) +!9 = !DILocalVariable(name: "main", scope: !4, file: !5, line: 2, type: !10, align: 32) +!10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 13, scope: !4) !12 = !DILocation(line: 10, column: 4, scope: !4) !13 = !DILocation(line: 11, column: 4, scope: !4) diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap index d773cc7dab7..de89bdd68e9 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap @@ -11,13 +11,13 @@ target triple = "[filtered]" @mainProg_instance = external global %mainProg -define i16 @main() { +define i32 @main() { entry: - %main = alloca i16, align 2 - store i16 0, i16* %main, align 2 + %main = alloca i32, align 4 + store i32 0, i32* %main, align 4 call void @mainProg(%mainProg* @mainProg_instance) - %main_ret = load i16, i16* %main, align 2 - ret i16 %main_ret + %main_ret = load i32, i32* %main, align 4 + ret i32 %main_ret } declare void @mainProg(%mainProg*) diff --git a/compiler/plc_llvm/build.rs b/compiler/plc_llvm/build.rs index c098b17c92e..83f99b38888 100644 --- a/compiler/plc_llvm/build.rs +++ b/compiler/plc_llvm/build.rs @@ -18,7 +18,15 @@ fn main() { build.cpp(true).file("src/cpp/llvm_wrapper.cpp").flag("-std=c++14"); for flag in cxxflags.split_whitespace() { - if flag.starts_with("-I") || flag.starts_with("-D") { + if flag.starts_with("-I") { + // Found an include path, re-add it as a system include path + let path = flag.trim_start_matches("-I"); + build.flag(format!("-isystem{path}")); + } else if flag.starts_with("-D") { + // Keep definitions as they are + build.flag(flag); + } else { + // For other flags (like -fno-exceptions etc.) build.flag(flag); } } From cb3dd688fb074a3693e575d790ba8c517330e49d Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Tue, 25 Nov 2025 07:43:03 +0100 Subject: [PATCH 04/18] run lit release builds on arm --- .github/workflows/lit.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/lit.yml b/.github/workflows/lit.yml index 48f822c935b..c98f81eacd7 100644 --- a/.github/workflows/lit.yml +++ b/.github/workflows/lit.yml @@ -30,6 +30,11 @@ jobs: lit-linux-release: name: lit tests (Linux, release build) runs-on: ubuntu-latest + strategy: + matrix: + config: + - { os: "ubuntu-latest" } + - { os: "ubuntu-24.04-arm" } container: ghcr.io/plc-lang/rust-llvm:latest steps: - uses: actions/checkout@v3 From 9aa3356e3ee9ab4544da4bf83662158fb4cf3cbd Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Tue, 25 Nov 2025 07:49:26 +0100 Subject: [PATCH 05/18] on msvc, ignore external warnings without the -isystem --- compiler/plc_llvm/build.rs | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/compiler/plc_llvm/build.rs b/compiler/plc_llvm/build.rs index 83f99b38888..e77d36de4e7 100644 --- a/compiler/plc_llvm/build.rs +++ b/compiler/plc_llvm/build.rs @@ -5,6 +5,7 @@ fn main() { std::env::var("LLVM_CONFIG").unwrap_or_else(|_| "llvm-config-14".to_string()) }; + // Fetch CXXFLAGS from llvm-config let cxxflags = String::from_utf8( std::process::Command::new(&llvm_config) .arg("--cxxflags") @@ -17,22 +18,38 @@ fn main() { let mut build = cc::Build::new(); build.cpp(true).file("src/cpp/llvm_wrapper.cpp").flag("-std=c++14"); + let is_msvc = std::env::var("TARGET").unwrap().ends_with("msvc"); + + if is_msvc { + // MSVC's way to treat included paths as system headers (suppress warnings) + // If the LLVM includes are coming through -I, we want to convert them + // to MSVC's equivalent. + // This is complex, so let's simplify by using the overall warning flags: + + // This flag tells Clang/MSVC not to emit warnings from external headers + // It should be applied to the compiler invocation overall. + build.flag("/external:W0"); + } + for flag in cxxflags.split_whitespace() { if flag.starts_with("-I") { - // Found an include path, re-add it as a system include path let path = flag.trim_start_matches("-I"); - build.flag(format!("-isystem{path}")); + + // On non-MSVC (GNU/Clang) targets, use -isystem + if !is_msvc { + build.flag(format!("-isystem{path}")); + } else { + // MSVC doesn't use -I or -isystem. It uses /I. + // We assume llvm-config outputs -I flags even for Windows, + // so we just pass them through if we use /external:W0 above. + build.flag(flag); + } } else if flag.starts_with("-D") { - // Keep definitions as they are - build.flag(flag); - } else { - // For other flags (like -fno-exceptions etc.) build.flag(flag); } } build.compile("llvm_wrapper"); - println!("cargo:rerun-if-changed=src/cpp/llvm_wrapper.cpp"); } From b0f8937f8d7ddef2d7ade9013dba97439332dc37 Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Tue, 25 Nov 2025 14:06:46 +0000 Subject: [PATCH 06/18] filter out alignments so we are compatible with aarch64 --- ...al_files__external_file_function_call.snap | 6 +- ...ernal_files__external_file_global_var.snap | 10 +- ...n_different_locations_with_debug_info.snap | 14 +- ...files__multiple_files_with_debug_info.snap | 14 +- ...iles__multiple_source_files_generated.snap | 14 +- compiler/plc_util/src/lib.rs | 2 + src/codegen/tests/address_tests.rs | 14 +- src/codegen/tests/code_gen_tests.rs | 188 +-- src/codegen/tests/debug_tests.rs | 306 ++-- ...ate_return_value_variable_in_function.snap | 8 +- ...rray_size_correctly_set_in_dwarf_info.snap | 11 +- ...g__assignment_statement_have_location.snap | 9 +- ...ging__case_conditions_location_marked.snap | 17 +- ...bugging__exit_statement_have_location.snap | 9 +- ...gging__for_conditions_location_marked.snap | 19 +- ...bugging__function_calls_have_location.snap | 7 +- ...on_calls_in_expressions_have_location.snap | 7 +- ...ugging__if_conditions_location_marked.snap | 15 +- ...g__implementation_added_as_subroutine.snap | 10 +- ...g__nested_function_calls_get_location.snap | 11 +- ...callable_expressions_have_no_location.snap | 9 +- ...on_function_pous_have_struct_as_param.snap | 12 +- ...ng__repeat_conditions_location_marked.snap | 13 +- ...gging__return_statement_have_location.snap | 9 +- ...temp_variables_in_pous_added_as_local.snap | 46 +- ...out_inout_in_function_added_as_params.snap | 16 +- ...ing__while_conditions_location_marked.snap | 13 +- src/codegen/tests/directaccess_test.rs | 130 +- src/codegen/tests/expression_tests.rs | 194 +-- src/codegen/tests/fnptr.rs | 194 +-- .../complex_initializers.rs | 1194 +++++++------- ...initializer_gets_declared_initializer.snap | 23 +- ..._initializer_gets_default_initializer.snap | 27 +- ...lues_in_global_variables_out_of_order.snap | 4 +- ..._class_struct_initialized_in_function.snap | 14 +- ...ues_for_not_initialized_function_vars.snap | 23 +- ...global_variables_in_inline_assignment.snap | 21 +- ..._block_struct_initialized_in_function.snap | 18 +- ..._function_return_value_is_initialized.snap | 19 +- ..._is_initialized_with_type_initializer.snap | 17 +- ...alue_with_initializers_is_initialized.snap | 19 +- ...e_without_initializers_is_initialized.snap | 19 +- ..._initial_values_in_function_block_pou.snap | 4 +- ...lizers__initialized_array_in_function.snap | 11 +- ...s__initialized_array_type_in_function.snap | 11 +- ...for_struct_initialization_in_function.snap | 11 +- ...nt_functions_are_referenced_correctly.snap | 21 +- ...imilar_names_are_referenced_correctly.snap | 41 +- ...th_inline_initializer_are_initialized.snap | 23 +- ...lizers__initial_values_in_fb_variable.snap | 4 +- src/codegen/tests/online_change_tests.rs | 32 +- src/codegen/tests/oop_tests.rs | 1216 +++++++-------- src/codegen/tests/oop_tests/debug_tests.rs | 688 ++++---- src/codegen/tests/oop_tests/super_tests.rs | 1384 ++++++++--------- src/codegen/tests/parameters_tests.rs | 380 ++--- src/codegen/tests/polymorphism.rs | 464 +++--- ...sts__accessing_nested_array_in_struct.snap | 3 +- ...e_gen_tests__accessing_nested_structs.snap | 5 +- ...e_gen_tests__action_called_in_program.snap | 3 +- ...ode_gen_tests__array_of_int_type_used.snap | 7 +- ...ype_with_non_zero_negative_start_used.snap | 7 +- ..._of_int_type_with_non_zero_start_used.snap | 7 +- ...onstant_expressions_in_case_selectors.snap | 37 +- ...th_enum_expressions_in_case_selectors.snap | 37 +- ...__case_with_multiple_labels_statement.snap | 9 +- ...gen_tests__case_with_ranges_statement.snap | 9 +- ...s__casted_literals_bool_code_gen_test.snap | 9 +- ..._tests__casted_literals_code_gen_test.snap | 5 +- ...ts__casted_literals_hex_code_gen_test.snap | 5 +- ...asted_literals_hex_ints_code_gen_test.snap | 5 +- ...__casted_literals_lreal_code_gen_test.snap | 5 +- ...s__casted_literals_real_code_gen_test.snap | 5 +- ...ests__class_member_access_from_method.snap | 20 +- ...__code_gen_tests__class_method_in_pou.snap | 28 +- ...sts__code_gen_tests__complex_pointers.snap | 35 +- ...ion_in_function_blocks_are_propagated.snap | 6 +- ...anged_type_declaration_are_propagated.snap | 25 +- ...gation_of_struct_fields_on_assignment.snap | 15 +- ..._contants_in_case_statements_resolved.snap | 17 +- ..._date_and_time_addition_in_var_output.snap | 27 +- ..._and_time_global_constants_initialize.snap | 97 +- ...sts__code_gen_tests__date_comparisons.snap | 9 +- ...ues_for_not_initialized_function_vars.snap | 23 +- ...tion_with_name_generates_int_function.snap | 7 +- ...pty_statements_dont_generate_anything.snap | 5 +- ...num_members_can_be_used_in_asignments.snap | 7 +- ...n_tests__fb_method_called_as_function.snap | 38 +- ...sts__code_gen_tests__fb_method_in_pou.snap | 36 +- ..._gen_tests__fb_method_with_var_in_out.snap | 18 +- ...ts__fb_method_with_var_input_defaults.snap | 16 +- ...ode_gen_tests__for_statement_continue.snap | 13 +- ...ts__code_gen_tests__for_statement_int.snap | 13 +- ...s__code_gen_tests__for_statement_lint.snap | 13 +- ...s__code_gen_tests__for_statement_sint.snap | 13 +- ...en_tests__for_statement_with_continue.snap | 19 +- ...de_gen_tests__for_statement_with_exit.snap | 19 +- ..._statement_with_references_steps_test.snap | 23 +- ..._tests__for_statement_with_steps_test.snap | 13 +- ...sts__for_statement_without_steps_test.snap | 13 +- ...n_tests__function_block_instance_call.snap | 4 +- ...unction_block_qualified_instance_call.snap | 8 +- ...on_call_with_same_name_as_return_type.snap | 7 +- ...gen_tests__function_called_in_program.snap | 11 +- ..._tests__function_called_when_shadowed.snap | 11 +- ...on_with_local_temp_var_initialization.snap | 27 +- ...ith_local_var_initialization_and_call.snap | 25 +- ...ion_with_parameters_called_in_program.snap | 15 +- ...with_two_parameters_called_in_program.snap | 19 +- ...lobal_variable_reference_is_generated.snap | 7 +- ...n_tests__if_elsif_else_generator_test.snap | 15 +- ...ts__code_gen_tests__if_generator_test.snap | 5 +- ...ts__if_with_expression_generator_test.snap | 7 +- ...code_gen_tests__method_codegen_return.snap | 12 +- ...__code_gen_tests__method_codegen_void.snap | 10 +- ...method_codegen_with_initialized_input.snap | 24 +- ...s__method_codegen_with_multiple_input.snap | 26 +- ...ts__method_with_aggregate_return_type.snap | 34 +- ...s__code_gen_tests__methods_var_output.snap | 24 +- ...code_gen_tests__multidim_array_access.snap | 7 +- ...__code_gen_tests__nested_array_access.snap | 7 +- ...e_gen_tests__nested_array_cube_writes.snap | 15 +- ...sted_array_cube_writes_negative_start.snap | 15 +- ...ts__nested_function_called_in_program.snap | 23 +- ...n_tests__order_var_and_var_temp_block.snap | 5 +- ...__code_gen_tests__pass_inout_to_inout.snap | 13 +- ...s__pointer_and_array_access_to_in_out.snap | 33 +- ...s__code_gen_tests__pointers_generated.snap | 33 +- ...gen_tests__program_with_and_statement.snap | 5 +- ...tes_void_function_and_struct_and_body.snap | 5 +- ...tes_void_function_and_struct_and_body.snap | 5 +- ..._program_with_casted_chars_assignment.snap | 5 +- ...s__code_gen_tests__program_with_chars.snap | 13 +- ...n_tests__program_with_date_assignment.snap | 25 +- ..._assignment_whit_short_datatype_names.snap | 19 +- ...arison_assignment_generates_correctly.snap | 25 +- ...am_with_local_temp_var_initialization.snap | 13 +- ...ts__program_with_long_date_assignment.snap | 17 +- ...tes_void_function_and_struct_and_body.snap | 9 +- ...tes_void_function_and_struct_and_body.snap | 7 +- ..._gen_tests__program_with_or_statement.snap | 5 +- ...en_tests__program_with_real_additions.snap | 11 +- ...n_tests__program_with_real_assignment.snap | 7 +- ...ts__program_with_real_cast_assignment.snap | 5 +- ...gram_with_signed_combined_expressions.snap | 7 +- ..._program_with_special_chars_in_string.snap | 9 +- ...tests__program_with_string_assignment.snap | 5 +- ...n_tests__program_with_time_assignment.snap | 19 +- ...__program_with_time_of_day_assignment.snap | 17 +- ...explicit_parameters_called_in_program.snap | 5 +- ...with_two_parameters_called_in_program.snap | 5 +- ...gram_with_var_inout_called_in_program.snap | 13 +- ...rogram_with_var_out_called_in_program.snap | 7 +- ..._with_var_out_called_mixed_in_program.snap | 7 +- ...tes_void_function_and_struct_and_body.snap | 3 +- ...tes_void_function_and_struct_and_body.snap | 21 +- ...tes_void_function_and_struct_and_body.snap | 25 +- ...tes_void_function_and_struct_and_body.snap | 3 +- ...tes_void_function_and_struct_and_body.snap | 5 +- ...tes_void_function_and_struct_and_body.snap | 5 +- ...gen_tests__program_with_xor_statement.snap | 7 +- ...fied_action_from_fb_called_in_program.snap | 10 +- ...fied_foreign_action_called_in_program.snap | 3 +- ...lified_local_action_called_in_program.snap | 3 +- ...ests__real_function_called_in_program.snap | 11 +- ...e_gen_tests__reference_qualified_name.snap | 16 +- ...nce_assignments_in_function_arguments.snap | 9 +- ...sts__code_gen_tests__repeat_statement.snap | 5 +- ...en_tests__returning_early_in_function.snap | 15 +- ...ts__returning_early_in_function_block.snap | 6 +- ...e_gen_tests__simple_case_i8_statement.snap | 11 +- ...code_gen_tests__simple_case_statement.snap | 11 +- ...binary_expression_with_different_size.snap | 23 +- ...ts__structs_members_can_be_referenced.snap | 3 +- ..._gen_tests__sub_range_check_functions.snap | 101 +- ...nge_type_calls_check_function_missing.snap | 25 +- ...ype_calls_check_function_on_assigment.snap | 25 +- ...ariables_have_nano_seconds_resolution.snap | 9 +- ..._tests__typed_enums_are_used_properly.snap | 7 +- ..._using_const_expression_in_range_type.snap | 27 +- ...s__using_global_consts_in_expressions.snap | 3 +- ..._variable_with_same_name_as_data_type.snap | 11 +- ...de_gen_tests__while_loop_with_if_exit.snap | 9 +- ...ests__code_gen_tests__while_statement.snap | 5 +- ...ests__while_with_expression_statement.snap | 5 +- ...s__aliased_number_type_comparing_test.snap | 23 +- ...sed_ranged_number_type_comparing_test.snap | 23 +- ...uctions_tests__compare_datetime_types.snap | 13 +- ...uction_functions_with_different_types.snap | 63 +- ...are_instructions_with_different_types.snap | 63 +- ...s_tests__pointer_compare_instructions.snap | 39 +- ...er_function_call_compare_instructions.snap | 33 +- ...ts__ranged_number_type_comparing_test.snap | 23 +- ...uctions_tests__string_comparison_test.snap | 41 +- ...ests__string_equal_with_constant_test.snap | 41 +- ...g_greater_or_equal_with_constant_test.snap | 57 +- ...ts__string_greater_with_constant_test.snap | 35 +- ...tests__string_less_with_constant_test.snap | 35 +- ...__string_not_equal_with_constant_test.snap | 35 +- ...g_smaller_or_equal_with_constant_test.snap | 57 +- ...tests__assigning_const_array_variable.snap | 3 +- ...ests__assigning_const_string_variable.snap | 3 +- ...ests__assigning_const_struct_variable.snap | 3 +- ...var_nested_struct_added_to_debug_info.snap | 20 +- ...global_var_struct_added_to_debug_info.snap | 8 +- ...rectaccess_test__bitaccess_assignment.snap | 29 +- ...ectaccess_test__byteaccess_assignment.snap | 15 +- ...ctaccess_test__chained_bit_assignment.snap | 15 +- ...ctaccess_test__dwordaccess_assignment.snap | 15 +- ...ctaccess_test__lwordaccess_assignment.snap | 15 +- ..._test__qualified_reference_assignment.snap | 19 +- ...ectaccess_test__wordaccess_assignment.snap | 15 +- ...n_tests__access_string_via_byte_array.snap | 5 +- ...ssion_tests__allowed_assignable_types.snap | 25 +- ...__expression_tests__builtin_add_float.snap | 31 +- ...s__expression_tests__builtin_add_ints.snap | 37 +- ...__expression_tests__builtin_add_mixed.snap | 31 +- ...__expression_tests__builtin_div_float.snap | 19 +- ...s__expression_tests__builtin_div_ints.snap | 19 +- ...__expression_tests__builtin_div_mixed.snap | 19 +- ...sion_tests__builtin_function_call_mux.snap | 23 +- ...function_call_mux_with_aggregate_type.snap | 13 +- ...iltin_function_call_sel_as_expression.snap | 7 +- ...uiltin_function_call_upper_bound_expr.snap | 38 +- ...__expression_tests__builtin_mul_float.snap | 31 +- ...s__expression_tests__builtin_mul_ints.snap | 37 +- ...__expression_tests__builtin_mul_mixed.snap | 31 +- ...__expression_tests__builtin_sub_float.snap | 19 +- ...s__expression_tests__builtin_sub_ints.snap | 19 +- ...__expression_tests__builtin_sub_mixed.snap | 19 +- ...s__calling_strings_in_function_return.snap | 15 +- ...ion_tests__cast_between_pointer_types.snap | 3 +- ...pression_tests__cast_lword_to_pointer.snap | 19 +- ...pression_tests__cast_pointer_to_lword.snap | 19 +- ...ion_tests__compare_date_time_literals.snap | 49 +- ...gen__tests__expression_tests__max_int.snap | 25 +- ...ression_tests__nested_call_statements.snap | 11 +- ...expression_tests__pointer_arithmetics.snap | 51 +- ...ts__pointer_arithmetics_function_call.snap | 13 +- ...on_tests__pointers_in_function_return.snap | 7 +- ...ion_tests__strings_in_function_return.snap | 17 +- ...ion_tests__structs_in_function_return.snap | 9 +- ...s__expression_tests__type_mix_in_call.snap | 17 +- ..._tests__unary_expressions_can_be_real.snap | 7 +- ...necessary_casts_between_pointer_types.snap | 7 +- ...ests__argument_fed_by_ref_then_by_val.snap | 33 +- ...t_argument_literals_for_function_call.snap | 57 +- ...argument_references_for_function_call.snap | 57 +- ...ests__function_call_with_array_access.snap | 21 +- ...ized_string_varargs_called_in_program.snap | 11 +- ..._with_sized_varargs_called_in_program.snap | 13 +- ...nction_with_varargs_called_in_program.snap | 5 +- ...literal_string_argument_passed_by_ref.snap | 7 +- ...ction_tests__member_variables_in_body.snap | 43 +- ..._output_should_be_passed_as_a_pointer.snap | 17 +- ...tests__passing_a_string_to_a_function.snap | 13 +- ...g_a_string_to_a_function_as_reference.snap | 11 +- ...arguments_to_functions_by_ref_and_val.snap | 47 +- ...tests__return_variable_in_nested_call.snap | 27 +- ...n__tests__function_tests__simple_call.snap | 15 +- ...on_tests__var_output_in_function_call.snap | 17 +- ...t__any_real_function_called_with_ints.snap | 39 +- ...eneric_call_gets_cast_to_biggest_type.snap | 19 +- ...generic_codegen_with_aggregate_return.snap | 29 +- ...unction_call_generates_real_type_call.snap | 19 +- ...eneric_function_with_aggregate_return.snap | 7 +- ...nerics_test__generic_output_parameter.snap | 19 +- ...n_tests__enum_referenced_in_fb_nested.snap | 12 +- ...ts__function_defined_in_external_file.snap | 12 +- ...sts__global_value_from_different_file.snap | 2 +- ...ccepts_empty_statement_as_input_param.snap | 6 +- ...cepts_empty_statement_as_output_param.snap | 8 +- ...ccepts_empty_statement_as_input_param.snap | 13 +- ...cepts_empty_statement_as_output_param.snap | 11 +- ...sts__function_all_parameters_assigned.snap | 25 +- ...function_default_value_parameter_type.snap | 31 +- ...ests__function_empty_inout_assignment.snap | 23 +- ...ests__function_empty_input_assignment.snap | 23 +- ...sts__function_empty_output_assignment.snap | 23 +- ...empty_output_default_value_assignment.snap | 25 +- ...ts__function_missing_inout_assignment.snap | 23 +- ...ts__function_missing_input_assignment.snap | 23 +- ...issing_input_default_value_assignment.snap | 19 +- ...s__function_missing_output_assignment.snap | 23 +- ...ssing_output_default_value_assignment.snap | 25 +- ...unction_block_pointer_are_assigned_to.snap | 10 +- ...ccepts_empty_statement_as_input_param.snap | 3 +- ...cepts_empty_statement_as_output_param.snap | 9 +- ...gram_all_parameters_assigned_explicit.snap | 21 +- ...gram_all_parameters_assigned_implicit.snap | 11 +- ...tests__program_empty_inout_assignment.snap | 13 +- ...sts__program_missing_input_assignment.snap | 7 +- ...ts__program_missing_output_assignment.snap | 7 +- ...var_in_out_params_can_be_out_of_order.snap | 32 +- ...taccess_generated_as_rsh_and_trunc_i1.snap | 9 +- ...eaccess_generated_as_rsh_and_trunc_i8.snap | 13 +- ...access_generated_as_rsh_and_trunc_i32.snap | 13 +- ...gen_test__floating_point_type_casting.snap | 43 +- ...n_result_assignment_on_aliased_string.snap | 25 +- ..._function_result_assignment_on_string.snap | 25 +- ...t_codegen_test__nested_bitwise_access.snap | 5 +- ...n_test__variable_based_bitwise_access.snap | 13 +- ...access_generated_as_rsh_and_trunc_i16.snap | 13 +- ..._casted_string_assignment_uses_memcpy.snap | 9 +- ...g_generic_string_should_return_by_ref.snap | 27 +- ...ts__function_returns_a_literal_string.snap | 15 +- ...es_string_paramter_and_returns_string.snap | 21 +- ...rings_should_be_collected_as_literals.snap | 19 +- ...__string_tests__program_string_output.snap | 9 +- ...program_with_casted_string_assignment.snap | 5 +- ...__program_with_string_type_assignment.snap | 7 +- ...ing_tests__string_function_parameters.snap | 19 +- ...stant_var_string_should_be_memcpyable.snap | 33 +- ...ar_string_should_be_memcpyable_nonref.snap | 37 +- ...ariable_length_strings_can_be_created.snap | 5 +- ...trings_using_constants_can_be_created.snap | 5 +- ...ests__variable_string_assignment_test.snap | 5 +- ...string_tests__vartmp_string_init_test.snap | 9 +- ...ed_datatypes_respect_conversion_rules.snap | 13 +- ...r_than_int_promote_the_second_operand.snap | 7 +- ...es_smaller_than_dint_promoted_to_dint.snap | 7 +- ...all_sint_expressions_fallback_to_dint.snap | 7 +- ...at_and_double_mix_converted_to_double.snap | 7 +- ...m_test__float_assigned_to_int_is_cast.snap | 9 +- ...t__float_assinged_to_double_to_double.snap | 5 +- ...m_test__int_assigned_to_float_is_cast.snap | 9 +- ...an_byte_promoted_on_compare_statement.snap | 5 +- ...bigger_than_float_converted_to_double.snap | 5 +- ..._or_equal_to_float_converted_to_float.snap | 7 +- ...ariadic_functions_without_declaration.snap | 23 +- ...hile_32bit_and_higher_keep_their_type.snap | 37 +- ...es_smaller_than_dint_promoted_to_dint.snap | 7 +- ...e_calls_with_differently_sized_arrays.snap | 89 +- ...al_variable_passed_to_function_as_vla.snap | 39 +- ...ruct_is_generated_for_call_statements.snap | 23 +- ...sts__vla_tests__multi_dimensional_vla.snap | 71 +- ...en__tests__vla_tests__vla_read_access.snap | 45 +- ..._vla_tests__vla_read_access_with_expr.snap | 50 +- ..._vla_tests__vla_read_access_with_lint.snap | 44 +- ...__vla_tests__vla_read_access_with_var.snap | 50 +- src/codegen/tests/statement_codegen_test.rs | 48 +- src/codegen/tests/typesystem_test.rs | 8 +- src/tests/adr/arrays_adr.rs | 6 +- src/tests/adr/enum_adr.rs | 6 +- src/tests/adr/initializer_functions_adr.rs | 308 ++-- src/tests/adr/pou_adr.rs | 158 +- src/tests/adr/strings_adr.rs | 6 +- src/tests/adr/structs_adr.rs | 6 +- src/tests/adr/vla_adr.rs | 102 +- ...__integration__cfc__ir__actions_debug.snap | 18 +- ...egration__cfc__ir__conditional_return.snap | 32 +- ...on__cfc__ir__conditional_return_debug.snap | 16 +- ...r__conditional_return_evaluating_true.snap | 54 +- ...tional_return_evaluating_true_negated.snap | 54 +- ...sts__integration__cfc__ir__jump_debug.snap | 12 +- ...on__cfc__ir__jump_to_label_with_false.snap | 28 +- ...ion__cfc__ir__jump_to_label_with_true.snap | 28 +- ...tegration__cfc__ir__sink_source_debug.snap | 10 +- ...ble_source_to_variable_and_block_sink.snap | 58 +- ...line_compile__ir_generation_full_pass.snap | 2 +- 359 files changed, 6450 insertions(+), 6727 deletions(-) diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap index eaeb3215870..90012b9437e 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_function_call.snap @@ -9,10 +9,10 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - store i32 0, i32* %main, align 4 + %main = alloca i32, align [filtered] + store i32 0, i32* %main, align [filtered] %call = call i32 @external() - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap index f877aef2731..02f4da65b67 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__external_files__external_file_global_var.snap @@ -12,12 +12,12 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - store i32 0, i32* %main, align 4 - store i16 2, i16* @x, align 2 - store i16 2, i16* @y, align 2 + %main = alloca i32, align [filtered] + store i32 0, i32* %main, align [filtered] + store i16 2, i16* @x, align [filtered] + store i16 2, i16* @y, align [filtered] %call = call i32 @external() - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap index 5b8ed54a86e..520dd9b8499 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap @@ -13,11 +13,11 @@ target triple = "[filtered]" define i32 @main() !dbg !4 { entry: - %main = alloca i32, align 4 + %main = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %main, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %main, align 4 + store i32 0, i32* %main, align [filtered] call void @mainProg(%mainProg* @mainProg_instance), !dbg !12 - %main_ret = load i32, i32* %main, align 4, !dbg !13 + %main_ret = load i32, i32* %main, align [filtered], !dbg !13 ret i32 %main_ret, !dbg !13 } @@ -101,8 +101,8 @@ target triple = "[filtered]" define void @__init_mainprog(%mainProg* %0) { entry: - %self = alloca %mainProg*, align 8 - store %mainProg* %0, %mainProg** %self, align 8 + %self = alloca %mainProg*, align [filtered] + store %mainProg* %0, %mainProg** %self, align [filtered] ret void } @@ -110,8 +110,8 @@ declare void @mainProg(%mainProg*) define void @__user_init_mainProg(%mainProg* %0) { entry: - %self = alloca %mainProg*, align 8 - store %mainProg* %0, %mainProg** %self, align 8 + %self = alloca %mainProg*, align [filtered] + store %mainProg* %0, %mainProg** %self, align [filtered] ret void } diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap index 76b714ab856..221d36bf115 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap @@ -13,11 +13,11 @@ target triple = "[filtered]" define i32 @main() !dbg !4 { entry: - %main = alloca i32, align 4 + %main = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %main, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %main, align 4 + store i32 0, i32* %main, align [filtered] call void @mainProg(%mainProg* @mainProg_instance), !dbg !12 - %main_ret = load i32, i32* %main, align 4, !dbg !13 + %main_ret = load i32, i32* %main, align [filtered], !dbg !13 ret i32 %main_ret, !dbg !13 } @@ -101,8 +101,8 @@ target triple = "[filtered]" define void @__init_mainprog(%mainProg* %0) { entry: - %self = alloca %mainProg*, align 8 - store %mainProg* %0, %mainProg** %self, align 8 + %self = alloca %mainProg*, align [filtered] + store %mainProg* %0, %mainProg** %self, align [filtered] ret void } @@ -110,8 +110,8 @@ declare void @mainProg(%mainProg*) define void @__user_init_mainProg(%mainProg* %0) { entry: - %self = alloca %mainProg*, align 8 - store %mainProg* %0, %mainProg** %self, align 8 + %self = alloca %mainProg*, align [filtered] + store %mainProg* %0, %mainProg** %self, align [filtered] ret void } diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap index de89bdd68e9..bb52003101f 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_source_files_generated.snap @@ -13,10 +13,10 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - store i32 0, i32* %main, align 4 + %main = alloca i32, align [filtered] + store i32 0, i32* %main, align [filtered] call void @mainProg(%mainProg* @mainProg_instance) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } @@ -47,8 +47,8 @@ target triple = "[filtered]" define void @__init_mainprog(%mainProg* %0) { entry: - %self = alloca %mainProg*, align 8 - store %mainProg* %0, %mainProg** %self, align 8 + %self = alloca %mainProg*, align [filtered] + store %mainProg* %0, %mainProg** %self, align [filtered] ret void } @@ -56,8 +56,8 @@ declare void @mainProg(%mainProg*) define void @__user_init_mainProg(%mainProg* %0) { entry: - %self = alloca %mainProg*, align 8 - store %mainProg* %0, %mainProg** %self, align 8 + %self = alloca %mainProg*, align [filtered] + store %mainProg* %0, %mainProg** %self, align [filtered] ret void } diff --git a/compiler/plc_util/src/lib.rs b/compiler/plc_util/src/lib.rs index b8240fe5513..4481b254db2 100644 --- a/compiler/plc_util/src/lib.rs +++ b/compiler/plc_util/src/lib.rs @@ -7,6 +7,7 @@ macro_rules! filtered_assert_snapshot { let mut settings = insta::Settings::clone_current(); settings.add_filter(r#"target datalayout = ".*""#, r#"target datalayout = "[filtered]""#); settings.add_filter(r#"target triple = ".*""#, r#"target triple = "[filtered]""#); + settings.add_filter(r#"align \d"#, r#"align [filtered]"#); settings.bind(|| insta::assert_snapshot!($value)) }}; @@ -15,6 +16,7 @@ macro_rules! filtered_assert_snapshot { let mut settings = insta::Settings::clone_current(); settings.add_filter(r#"target datalayout = ".*""#, r#"target datalayout = "[filtered]""#); settings.add_filter(r#"target triple = ".*""#, r#"target triple = "[filtered]""#); + settings.add_filter(r#"align \d"#, r#"align [filtered]"#); settings.bind(|| insta::assert_snapshot!($value, @$snapshot)); }}; } diff --git a/src/codegen/tests/address_tests.rs b/src/codegen/tests/address_tests.rs index b5b4e22bed0..6ce6918c4ca 100644 --- a/src/codegen/tests/address_tests.rs +++ b/src/codegen/tests/address_tests.rs @@ -77,10 +77,10 @@ fn address_variable_used_with_symbolic_name() { define void @mainProg(%mainProg* %0) { entry: - %deref = load i8*, i8** @foo, align 8 - store i8 0, i8* %deref, align 1 - %deref1 = load i8*, i8** @baz, align 8 - store i8 1, i8* %deref1, align 1 + %deref = load i8*, i8** @foo, align [filtered] + store i8 0, i8* %deref, align [filtered] + %deref1 = load i8*, i8** @baz, align [filtered] + store i8 1, i8* %deref1, align [filtered] ret void } "#); @@ -120,9 +120,9 @@ fn address_used_in_body() { define void @mainProg(%mainProg* %0) { entry: - store i8 1, i8* @__PI_1_2_3_4, align 1 - %1 = load i8, i8* @__PI_1_2_3_5, align 1 - store i8 %1, i8* @x, align 1 + store i8 1, i8* @__PI_1_2_3_4, align [filtered] + %1 = load i8, i8* @__PI_1_2_3_5, align [filtered] + store i8 %1, i8* @x, align [filtered] ret void } "#); diff --git a/src/codegen/tests/code_gen_tests.rs b/src/codegen/tests/code_gen_tests.rs index acdc823d77e..aa93083bcd1 100644 --- a/src/codegen/tests/code_gen_tests.rs +++ b/src/codegen/tests/code_gen_tests.rs @@ -1117,8 +1117,8 @@ fn fb_method_called_locally() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %bar = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %call = call i32 @foo__addToBar(%foo* %0, i16 42) ret void @@ -1126,33 +1126,33 @@ fn fb_method_called_locally() { define i32 @foo__addToBar(%foo* %0, i16 %1) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %bar = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %foo.addToBar = alloca i32, align 4 - %in = alloca i16, align 2 - store i16 %1, i16* %in, align 2 - store i32 0, i32* %foo.addToBar, align 4 - %load_in = load i16, i16* %in, align 2 + %foo.addToBar = alloca i32, align [filtered] + %in = alloca i16, align [filtered] + store i16 %1, i16* %in, align [filtered] + store i32 0, i32* %foo.addToBar, align [filtered] + %load_in = load i16, i16* %in, align [filtered] %2 = sext i16 %load_in to i32 - %load_bar = load i32, i32* %bar, align 4 + %load_bar = load i32, i32* %bar, align [filtered] %tmpVar = add i32 %2, %load_bar - store i32 %tmpVar, i32* %bar, align 4 - %load_bar1 = load i32, i32* %bar, align 4 - store i32 %load_bar1, i32* %foo.addToBar, align 4 - %foo__addToBar_ret = load i32, i32* %foo.addToBar, align 4 + store i32 %tmpVar, i32* %bar, align [filtered] + %load_bar1 = load i32, i32* %bar, align [filtered] + store i32 %load_bar1, i32* %foo.addToBar, align [filtered] + %foo__addToBar_ret = load i32, i32* %foo.addToBar, align [filtered] ret i32 %foo__addToBar_ret } define void @main() { entry: - %fb = alloca %foo, align 8 - %x = alloca i32, align 4 + %fb = alloca %foo, align [filtered] + %x = alloca i32, align [filtered] %0 = bitcast %foo* %fb to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) - store i32 0, i32* %x, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) + store i32 0, i32* %x, align [filtered] %call = call i32 @foo__addToBar(%foo* %fb, i16 3) - store i32 %call, i32* %x, align 4 + store i32 %call, i32* %x, align [filtered] ret void } @@ -1206,8 +1206,8 @@ fn fb_local_method_var_shadows_parent_var() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %bar = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %call = call i32 @foo__addToBar(%foo* %0, i16 42) ret void @@ -1215,35 +1215,35 @@ fn fb_local_method_var_shadows_parent_var() { define i32 @foo__addToBar(%foo* %0, i16 %1) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %bar = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %foo.addToBar = alloca i32, align 4 - %in = alloca i16, align 2 - store i16 %1, i16* %in, align 2 - %bar1 = alloca i32, align 4 - store i32 69, i32* %bar1, align 4 - store i32 0, i32* %foo.addToBar, align 4 - %load_in = load i16, i16* %in, align 2 + %foo.addToBar = alloca i32, align [filtered] + %in = alloca i16, align [filtered] + store i16 %1, i16* %in, align [filtered] + %bar1 = alloca i32, align [filtered] + store i32 69, i32* %bar1, align [filtered] + store i32 0, i32* %foo.addToBar, align [filtered] + %load_in = load i16, i16* %in, align [filtered] %2 = sext i16 %load_in to i32 - %load_bar = load i32, i32* %bar1, align 4 + %load_bar = load i32, i32* %bar1, align [filtered] %tmpVar = add i32 %2, %load_bar - store i32 %tmpVar, i32* %bar1, align 4 - %load_bar2 = load i32, i32* %bar1, align 4 - store i32 %load_bar2, i32* %foo.addToBar, align 4 - %foo__addToBar_ret = load i32, i32* %foo.addToBar, align 4 + store i32 %tmpVar, i32* %bar1, align [filtered] + %load_bar2 = load i32, i32* %bar1, align [filtered] + store i32 %load_bar2, i32* %foo.addToBar, align [filtered] + %foo__addToBar_ret = load i32, i32* %foo.addToBar, align [filtered] ret i32 %foo__addToBar_ret } define void @main() { entry: - %fb = alloca %foo, align 8 - %x = alloca i32, align 4 + %fb = alloca %foo, align [filtered] + %x = alloca i32, align [filtered] %0 = bitcast %foo* %fb to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) - store i32 0, i32* %x, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) + store i32 0, i32* %x, align [filtered] %call = call i32 @foo__addToBar(%foo* %fb, i16 3) - store i32 %call, i32* %x, align 4 + store i32 %call, i32* %x, align [filtered] ret void } @@ -1302,27 +1302,27 @@ fn prog_method_called_locally() { define i32 @foo__addToBar(%foo* %0, i16 %1) { entry: %bar = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %foo.addToBar = alloca i32, align 4 - %in = alloca i16, align 2 - store i16 %1, i16* %in, align 2 - store i32 0, i32* %foo.addToBar, align 4 - %load_in = load i16, i16* %in, align 2 + %foo.addToBar = alloca i32, align [filtered] + %in = alloca i16, align [filtered] + store i16 %1, i16* %in, align [filtered] + store i32 0, i32* %foo.addToBar, align [filtered] + %load_in = load i16, i16* %in, align [filtered] %2 = sext i16 %load_in to i32 - %load_bar = load i32, i32* %bar, align 4 + %load_bar = load i32, i32* %bar, align [filtered] %tmpVar = add i32 %2, %load_bar - store i32 %tmpVar, i32* %bar, align 4 - %load_bar1 = load i32, i32* %bar, align 4 - store i32 %load_bar1, i32* %foo.addToBar, align 4 - %foo__addToBar_ret = load i32, i32* %foo.addToBar, align 4 + store i32 %tmpVar, i32* %bar, align [filtered] + %load_bar1 = load i32, i32* %bar, align [filtered] + store i32 %load_bar1, i32* %foo.addToBar, align [filtered] + %foo__addToBar_ret = load i32, i32* %foo.addToBar, align [filtered] ret i32 %foo__addToBar_ret } define void @main() { entry: - %x = alloca i32, align 4 - store i32 0, i32* %x, align 4 + %x = alloca i32, align [filtered] + store i32 0, i32* %x, align [filtered] %call = call i32 @foo__addToBar(%foo* @foo_instance, i16 3) - store i32 %call, i32* %x, align 4 + store i32 %call, i32* %x, align [filtered] ret void } "#) @@ -1378,29 +1378,29 @@ fn prog_local_method_var_shadows_parent_var() { define i32 @foo__addToBar(%foo* %0, i16 %1) { entry: %bar = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %foo.addToBar = alloca i32, align 4 - %in = alloca i16, align 2 - store i16 %1, i16* %in, align 2 - %bar1 = alloca i32, align 4 - store i32 69, i32* %bar1, align 4 - store i32 0, i32* %foo.addToBar, align 4 - %load_in = load i16, i16* %in, align 2 + %foo.addToBar = alloca i32, align [filtered] + %in = alloca i16, align [filtered] + store i16 %1, i16* %in, align [filtered] + %bar1 = alloca i32, align [filtered] + store i32 69, i32* %bar1, align [filtered] + store i32 0, i32* %foo.addToBar, align [filtered] + %load_in = load i16, i16* %in, align [filtered] %2 = sext i16 %load_in to i32 - %load_bar = load i32, i32* %bar1, align 4 + %load_bar = load i32, i32* %bar1, align [filtered] %tmpVar = add i32 %2, %load_bar - store i32 %tmpVar, i32* %bar1, align 4 - %load_bar2 = load i32, i32* %bar1, align 4 - store i32 %load_bar2, i32* %foo.addToBar, align 4 - %foo__addToBar_ret = load i32, i32* %foo.addToBar, align 4 + store i32 %tmpVar, i32* %bar1, align [filtered] + %load_bar2 = load i32, i32* %bar1, align [filtered] + store i32 %load_bar2, i32* %foo.addToBar, align [filtered] + %foo__addToBar_ret = load i32, i32* %foo.addToBar, align [filtered] ret i32 %foo__addToBar_ret } define void @main() { entry: - %x = alloca i32, align 4 - store i32 0, i32* %x, align 4 + %x = alloca i32, align [filtered] + store i32 0, i32* %x, align [filtered] %call = call i32 @foo__addToBar(%foo* @foo_instance, i16 3) - store i32 %call, i32* %x, align 4 + store i32 %call, i32* %x, align [filtered] ret void } "#) @@ -1629,38 +1629,38 @@ fn for_statement_with_binary_expressions() { %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 3 - %load_y = load i32, i32* %y, align 4 + %load_y = load i32, i32* %y, align [filtered] %tmpVar = add i32 %load_y, 1 - store i32 %tmpVar, i32* %x, align 4 - %load_step = load i32, i32* %step, align 4 + store i32 %tmpVar, i32* %x, align [filtered] + %load_step = load i32, i32* %step, align [filtered] %tmpVar1 = mul i32 %load_step, 3 %is_incrementing = icmp sgt i32 %tmpVar1, 0 br i1 %is_incrementing, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %load_z = load i32, i32* %z, align 4 + %load_z = load i32, i32* %z, align [filtered] %tmpVar2 = sub i32 %load_z, 2 - %1 = load i32, i32* %x, align 4 + %1 = load i32, i32* %x, align [filtered] %condition = icmp sle i32 %1, %tmpVar2 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %load_z3 = load i32, i32* %z, align 4 + %load_z3 = load i32, i32* %z, align [filtered] %tmpVar4 = sub i32 %load_z3, 2 - %2 = load i32, i32* %x, align 4 + %2 = load i32, i32* %x, align [filtered] %condition5 = icmp sge i32 %2, %tmpVar4 br i1 %condition5, label %loop, label %continue loop: ; preds = %predicate_sge, %predicate_sle - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] br label %increment increment: ; preds = %loop - %3 = load i32, i32* %x, align 4 - %load_step6 = load i32, i32* %step, align 4 + %3 = load i32, i32* %x, align [filtered] + %load_step6 = load i32, i32* %step, align [filtered] %tmpVar7 = mul i32 %load_step6, 3 %next = add i32 %tmpVar7, %3 - store i32 %next, i32* %x, align 4 + store i32 %next, i32* %x, align [filtered] br i1 %is_incrementing, label %predicate_sle, label %predicate_sge continue: ; preds = %predicate_sge, %predicate_sle @@ -1690,46 +1690,46 @@ fn for_statement_type_casting() { define void @main() { entry: - %a = alloca i8, align 1 - %b = alloca i16, align 2 - store i8 0, i8* %a, align 1 - store i16 1, i16* %b, align 2 - store i8 0, i8* %a, align 1 - %load_b = load i16, i16* %b, align 2 + %a = alloca i8, align [filtered] + %b = alloca i16, align [filtered] + store i8 0, i8* %a, align [filtered] + store i16 1, i16* %b, align [filtered] + store i8 0, i8* %a, align [filtered] + %load_b = load i16, i16* %b, align [filtered] %0 = trunc i16 %load_b to i8 %1 = sext i8 %0 to i32 %is_incrementing = icmp sgt i32 %1, 0 br i1 %is_incrementing, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %2 = load i8, i8* %a, align 1 + %2 = load i8, i8* %a, align [filtered] %3 = zext i8 %2 to i32 %condition = icmp sle i32 %3, 10 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %4 = load i8, i8* %a, align 1 + %4 = load i8, i8* %a, align [filtered] %5 = zext i8 %4 to i32 %condition1 = icmp sge i32 %5, 10 br i1 %condition1, label %loop, label %continue loop: ; preds = %predicate_sge, %predicate_sle - %load_b2 = load i16, i16* %b, align 2 + %load_b2 = load i16, i16* %b, align [filtered] %6 = sext i16 %load_b2 to i32 %tmpVar = mul i32 %6, 3 %7 = trunc i32 %tmpVar to i16 - store i16 %7, i16* %b, align 2 + store i16 %7, i16* %b, align [filtered] br label %increment increment: ; preds = %loop - %8 = load i8, i8* %a, align 1 - %load_b3 = load i16, i16* %b, align 2 + %8 = load i8, i8* %a, align [filtered] + %load_b3 = load i16, i16* %b, align [filtered] %9 = trunc i16 %load_b3 to i8 %10 = sext i8 %9 to i32 %11 = zext i8 %8 to i32 %next = add i32 %10, %11 %12 = trunc i32 %next to i8 - store i8 %12, i8* %a, align 1 + store i8 %12, i8* %a, align [filtered] br i1 %is_incrementing, label %predicate_sle, label %predicate_sge continue: ; preds = %predicate_sge, %predicate_sle @@ -3992,8 +3992,8 @@ fn variables_in_var_external_block_are_not_generated() { define void @bar(%bar* %0) { entry: - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] ret void } diff --git a/src/codegen/tests/debug_tests.rs b/src/codegen/tests/debug_tests.rs index 0a2d86fd3ee..c8784a2c845 100644 --- a/src/codegen/tests/debug_tests.rs +++ b/src/codegen/tests/debug_tests.rs @@ -228,18 +228,18 @@ fn switch_case_debug_info() { define i32 @main() !dbg !4 { entry: - %main = alloca i32, align 4 - %x1 = alloca i16, align 2 - %x2 = alloca i16, align 2 - %x3 = alloca i16, align 2 + %main = alloca i32, align [filtered] + %x1 = alloca i16, align [filtered] + %x2 = alloca i16, align [filtered] + %x3 = alloca i16, align [filtered] call void @llvm.dbg.declare(metadata i16* %x1, metadata !8, metadata !DIExpression()), !dbg !10 - store i16 0, i16* %x1, align 2 + store i16 0, i16* %x1, align [filtered] call void @llvm.dbg.declare(metadata i16* %x2, metadata !11, metadata !DIExpression()), !dbg !12 - store i16 0, i16* %x2, align 2 + store i16 0, i16* %x2, align [filtered] call void @llvm.dbg.declare(metadata i16* %x3, metadata !13, metadata !DIExpression()), !dbg !14 - store i16 0, i16* %x3, align 2 + store i16 0, i16* %x3, align [filtered] call void @llvm.dbg.declare(metadata i32* %main, metadata !15, metadata !DIExpression()), !dbg !17 - store i32 0, i32* %main, align 4 + store i32 0, i32* %main, align [filtered] br label %condition_check, !dbg !18 condition_check: ; preds = %continue2, %entry @@ -249,7 +249,7 @@ fn switch_case_debug_info() { br i1 false, label %condition_body, label %continue1, !dbg !19 continue: ; preds = %condition_body, %condition_check - %main_ret = load i32, i32* %main, align 4, !dbg !20 + %main_ret = load i32, i32* %main, align [filtered], !dbg !20 ret i32 %main_ret, !dbg !20 condition_body: ; preds = %while_body @@ -259,12 +259,12 @@ fn switch_case_debug_info() { br label %continue1, !dbg !21 continue1: ; preds = %buffer_block, %while_body - %load_x1 = load i16, i16* %x1, align 2, !dbg !22 + %load_x1 = load i16, i16* %x1, align [filtered], !dbg !22 %0 = sext i16 %load_x1 to i32, !dbg !22 %tmpVar = add i32 %0, 1, !dbg !22 %1 = trunc i32 %tmpVar to i16, !dbg !22 - store i16 %1, i16* %x1, align 2, !dbg !22 - %load_x13 = load i16, i16* %x1, align 2, !dbg !22 + store i16 %1, i16* %x1, align [filtered], !dbg !22 + %load_x13 = load i16, i16* %x1, align [filtered], !dbg !22 switch i16 %load_x13, label %else [ i16 1, label %case i16 2, label %case4 @@ -272,21 +272,21 @@ fn switch_case_debug_info() { ], !dbg !23 case: ; preds = %continue1 - store i16 1, i16* %x2, align 2, !dbg !24 + store i16 1, i16* %x2, align [filtered], !dbg !24 br label %continue2, !dbg !25 case4: ; preds = %continue1 - store i16 2, i16* %x2, align 2, !dbg !26 + store i16 2, i16* %x2, align [filtered], !dbg !26 br label %continue2, !dbg !25 case5: ; preds = %continue1 - store i16 3, i16* %x2, align 2, !dbg !27 + store i16 3, i16* %x2, align [filtered], !dbg !27 br label %continue2, !dbg !25 else: ; preds = %continue1 - store i16 0, i16* %x1, align 2, !dbg !28 - store i16 1, i16* %x2, align 2, !dbg !29 - store i16 2, i16* %x3, align 2, !dbg !30 + store i16 0, i16* %x1, align [filtered], !dbg !28 + store i16 1, i16* %x2, align [filtered], !dbg !29 + store i16 2, i16* %x3, align [filtered], !dbg !30 br label %continue2, !dbg !25 continue2: ; preds = %else, %case5, %case4, %case @@ -368,8 +368,8 @@ fn dbg_declare_has_valid_metadata_references_for_methods() { define void @fb(%fb* %0) !dbg !14 { entry: call void @llvm.dbg.declare(metadata %fb* %0, metadata !18, metadata !DIExpression()), !dbg !19 - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 ret void, !dbg !19 } @@ -377,8 +377,8 @@ fn dbg_declare_has_valid_metadata_references_for_methods() { define void @fb__foo(%fb* %0) !dbg !20 { entry: call void @llvm.dbg.declare(metadata %fb* %0, metadata !21, metadata !DIExpression()), !dbg !22 - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 ret void, !dbg !22 } @@ -388,38 +388,38 @@ fn dbg_declare_has_valid_metadata_references_for_methods() { define void @__init___vtable_fb(%__vtable_fb* %0) { entry: - %self = alloca %__vtable_fb*, align 8 - store %__vtable_fb* %0, %__vtable_fb** %self, align 8 - %deref = load %__vtable_fb*, %__vtable_fb** %self, align 8 + %self = alloca %__vtable_fb*, align [filtered] + store %__vtable_fb* %0, %__vtable_fb** %self, align [filtered] + %deref = load %__vtable_fb*, %__vtable_fb** %self, align [filtered] %__body = getelementptr inbounds %__vtable_fb, %__vtable_fb* %deref, i32 0, i32 0 - store void (%fb*)* @fb, void (%fb*)** %__body, align 8 - %deref1 = load %__vtable_fb*, %__vtable_fb** %self, align 8 + store void (%fb*)* @fb, void (%fb*)** %__body, align [filtered] + %deref1 = load %__vtable_fb*, %__vtable_fb** %self, align [filtered] %foo = getelementptr inbounds %__vtable_fb, %__vtable_fb* %deref1, i32 0, i32 1 - store void (%fb*)* @fb__foo, void (%fb*)** %foo, align 8 + store void (%fb*)* @fb__foo, void (%fb*)** %foo, align [filtered] ret void } define void @__init_fb(%fb* %0) { entry: - %self = alloca %fb*, align 8 - store %fb* %0, %fb** %self, align 8 - %deref = load %fb*, %fb** %self, align 8 + %self = alloca %fb*, align [filtered] + store %fb* %0, %fb** %self, align [filtered] + %deref = load %fb*, %fb** %self, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_fb* @__vtable_fb_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_fb* @__vtable_fb_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_fb(%fb* %0) { entry: - %self = alloca %fb*, align 8 - store %fb* %0, %fb** %self, align 8 + %self = alloca %fb*, align [filtered] + store %fb* %0, %fb** %self, align [filtered] ret void } define void @__user_init___vtable_fb(%__vtable_fb* %0) { entry: - %self = alloca %__vtable_fb*, align 8 - store %__vtable_fb* %0, %__vtable_fb** %self, align 8 + %self = alloca %__vtable_fb*, align [filtered] + store %__vtable_fb* %0, %__vtable_fb** %self, align [filtered] ret void } @@ -499,34 +499,34 @@ fn action_with_var_temp() { define i32 @main() !dbg !9 { entry: - %main = alloca i32, align 4 + %main = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %main, metadata !12, metadata !DIExpression()), !dbg !14 - store i32 0, i32* %main, align 4 + store i32 0, i32* %main, align [filtered] call void @PLC_PRG(%PLC_PRG* @PLC_PRG_instance), !dbg !15 call void @PLC_PRG__act(%PLC_PRG* @PLC_PRG_instance), !dbg !16 - %main_ret = load i32, i32* %main, align 4, !dbg !17 + %main_ret = load i32, i32* %main, align [filtered], !dbg !17 ret i32 %main_ret, !dbg !17 } define void @PLC_PRG(%PLC_PRG* %0) !dbg !18 { entry: call void @llvm.dbg.declare(metadata %PLC_PRG* %0, metadata !21, metadata !DIExpression()), !dbg !22 - %x = alloca i32, align 4 + %x = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %x, metadata !23, metadata !DIExpression()), !dbg !24 - store i32 0, i32* %x, align 4 - store i32 0, i32* %x, align 4, !dbg !22 + store i32 0, i32* %x, align [filtered] + store i32 0, i32* %x, align [filtered], !dbg !22 ret void, !dbg !25 } define void @PLC_PRG__act(%PLC_PRG* %0) !dbg !26 { entry: call void @llvm.dbg.declare(metadata %PLC_PRG* %0, metadata !27, metadata !DIExpression()), !dbg !28 - %x = alloca i32, align 4 + %x = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %x, metadata !29, metadata !DIExpression()), !dbg !30 - store i32 0, i32* %x, align 4 - %load_x = load i32, i32* %x, align 4, !dbg !28 + store i32 0, i32* %x, align [filtered] + %load_x = load i32, i32* %x, align [filtered], !dbg !28 %tmpVar = add i32 %load_x, 1, !dbg !28 - store i32 %tmpVar, i32* %x, align 4, !dbg !28 + store i32 %tmpVar, i32* %x, align [filtered], !dbg !28 ret void, !dbg !31 } @@ -535,15 +535,15 @@ fn action_with_var_temp() { define void @__init_plc_prg(%PLC_PRG* %0) { entry: - %self = alloca %PLC_PRG*, align 8 - store %PLC_PRG* %0, %PLC_PRG** %self, align 8 + %self = alloca %PLC_PRG*, align [filtered] + store %PLC_PRG* %0, %PLC_PRG** %self, align [filtered] ret void } define void @__user_init_PLC_PRG(%PLC_PRG* %0) { entry: - %self = alloca %PLC_PRG*, align 8 - store %PLC_PRG* %0, %PLC_PRG** %self, align 8 + %self = alloca %PLC_PRG*, align [filtered] + store %PLC_PRG* %0, %PLC_PRG** %self, align [filtered] ret void } @@ -661,78 +661,78 @@ END_FUNCTION define void @main() !dbg !39 { entry: - %st = alloca %struct_, align 8 - %s = alloca [81 x i8], align 1 - %b = alloca i8, align 1 - %arr = alloca [3 x [81 x i8]], align 1 - %i = alloca i16, align 2 + %st = alloca %struct_, align [filtered] + %s = alloca [81 x i8], align [filtered] + %b = alloca i8, align [filtered] + %arr = alloca [3 x [81 x i8]], align [filtered] + %i = alloca i16, align [filtered] call void @llvm.dbg.declare(metadata %struct_* %st, metadata !43, metadata !DIExpression()), !dbg !44 %0 = bitcast %struct_* %st to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%struct_, %struct_* @__struct___init, i32 0, i32 0, i32 0, i32 0), i64 ptrtoint (%struct_* getelementptr (%struct_, %struct_* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds (%struct_, %struct_* @__struct___init, i32 0, i32 0, i32 0, i32 0), i64 ptrtoint (%struct_* getelementptr (%struct_, %struct_* null, i32 1) to i64), i1 false) call void @llvm.dbg.declare(metadata [81 x i8]* %s, metadata !45, metadata !DIExpression()), !dbg !46 %1 = bitcast [81 x i8]* %s to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) call void @llvm.dbg.declare(metadata i8* %b, metadata !47, metadata !DIExpression()), !dbg !48 - store i8 0, i8* %b, align 1 + store i8 0, i8* %b, align [filtered] call void @llvm.dbg.declare(metadata [3 x [81 x i8]]* %arr, metadata !49, metadata !DIExpression()), !dbg !50 %2 = bitcast [3 x [81 x i8]]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %2, i8 0, i64 ptrtoint ([3 x [81 x i8]]* getelementptr ([3 x [81 x i8]], [3 x [81 x i8]]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %2, i8 0, i64 ptrtoint ([3 x [81 x i8]]* getelementptr ([3 x [81 x i8]], [3 x [81 x i8]]* null, i32 1) to i64), i1 false) call void @llvm.dbg.declare(metadata i16* %i, metadata !51, metadata !DIExpression()), !dbg !52 - store i16 0, i16* %i, align 2 + store i16 0, i16* %i, align [filtered] call void @__init_struct_(%struct_* %st), !dbg !53 call void @__user_init_struct_(%struct_* %st), !dbg !53 %s1 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 2, !dbg !54 %3 = bitcast [81 x i8]* %s to i8*, !dbg !54 %4 = bitcast [81 x i8]* %s1 to i8*, !dbg !54 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 %4, i32 80, i1 false), !dbg !54 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] %4, i32 80, i1 false), !dbg !54 %inner = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !55 %s2 = getelementptr inbounds %inner, %inner* %inner, i32 0, i32 0, !dbg !55 %5 = bitcast [81 x i8]* %s to i8*, !dbg !55 %6 = bitcast [81 x i8]* %s2 to i8*, !dbg !55 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %5, i8* align 1 %6, i32 80, i1 false), !dbg !55 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %5, i8* align [filtered] %6, i32 80, i1 false), !dbg !55 %b3 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 3, !dbg !56 - %load_b = load i8, i8* %b3, align 1, !dbg !56 - store i8 %load_b, i8* %b, align 1, !dbg !56 + %load_b = load i8, i8* %b3, align [filtered], !dbg !56 + store i8 %load_b, i8* %b, align [filtered], !dbg !56 %inner4 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !57 %b5 = getelementptr inbounds %inner, %inner* %inner4, i32 0, i32 1, !dbg !57 - %load_b6 = load i8, i8* %b5, align 1, !dbg !57 - store i8 %load_b6, i8* %b, align 1, !dbg !57 + %load_b6 = load i8, i8* %b5, align [filtered], !dbg !57 + store i8 %load_b6, i8* %b, align [filtered], !dbg !57 %arr7 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 5, !dbg !58 %7 = bitcast [3 x [81 x i8]]* %arr to i8*, !dbg !58 %8 = bitcast [3 x [81 x i8]]* %arr7 to i8*, !dbg !58 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %7, i8* align 1 %8, i64 ptrtoint ([3 x [81 x i8]]* getelementptr ([3 x [81 x i8]], [3 x [81 x i8]]* null, i32 1) to i64), i1 false), !dbg !58 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %7, i8* align [filtered] %8, i64 ptrtoint ([3 x [81 x i8]]* getelementptr ([3 x [81 x i8]], [3 x [81 x i8]]* null, i32 1) to i64), i1 false), !dbg !58 %inner8 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !59 %arr9 = getelementptr inbounds %inner, %inner* %inner8, i32 0, i32 3, !dbg !59 %9 = bitcast [3 x [81 x i8]]* %arr to i8*, !dbg !59 %10 = bitcast [3 x [81 x i8]]* %arr9 to i8*, !dbg !59 - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %9, i8* align 1 %10, i64 ptrtoint ([3 x [81 x i8]]* getelementptr ([3 x [81 x i8]], [3 x [81 x i8]]* null, i32 1) to i64), i1 false), !dbg !59 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %9, i8* align [filtered] %10, i64 ptrtoint ([3 x [81 x i8]]* getelementptr ([3 x [81 x i8]], [3 x [81 x i8]]* null, i32 1) to i64), i1 false), !dbg !59 %i10 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 6, !dbg !60 - %load_i = load i16, i16* %i10, align 2, !dbg !60 - store i16 %load_i, i16* %i, align 2, !dbg !60 + %load_i = load i16, i16* %i10, align [filtered], !dbg !60 + store i16 %load_i, i16* %i, align [filtered], !dbg !60 %inner11 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !61 %i12 = getelementptr inbounds %inner, %inner* %inner11, i32 0, i32 4, !dbg !61 - %load_i13 = load i16, i16* %i12, align 2, !dbg !61 - store i16 %load_i13, i16* %i, align 2, !dbg !61 + %load_i13 = load i16, i16* %i12, align [filtered], !dbg !61 + store i16 %load_i13, i16* %i, align [filtered], !dbg !61 %tmpVar = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr, i32 0, i32 0, !dbg !62 %arr14 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 5, !dbg !62 %tmpVar15 = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr14, i32 0, i32 0, !dbg !62 %11 = bitcast [81 x i8]* %tmpVar to i8*, !dbg !62 %12 = bitcast [81 x i8]* %tmpVar15 to i8*, !dbg !62 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %11, i8* align 1 %12, i32 80, i1 false), !dbg !62 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %11, i8* align [filtered] %12, i32 80, i1 false), !dbg !62 %tmpVar16 = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr, i32 0, i32 1, !dbg !63 %inner17 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !63 %arr18 = getelementptr inbounds %inner, %inner* %inner17, i32 0, i32 3, !dbg !63 %tmpVar19 = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr18, i32 0, i32 1, !dbg !63 %13 = bitcast [81 x i8]* %tmpVar16 to i8*, !dbg !63 %14 = bitcast [81 x i8]* %tmpVar19 to i8*, !dbg !63 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %13, i8* align 1 %14, i32 80, i1 false), !dbg !63 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %13, i8* align [filtered] %14, i32 80, i1 false), !dbg !63 %tmpVar20 = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr, i32 0, i32 2, !dbg !64 %inner21 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !64 %arr22 = getelementptr inbounds %inner, %inner* %inner21, i32 0, i32 3, !dbg !64 %tmpVar23 = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr22, i32 0, i32 2, !dbg !64 %15 = bitcast [81 x i8]* %tmpVar20 to i8*, !dbg !64 %16 = bitcast [81 x i8]* %tmpVar23 to i8*, !dbg !64 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %15, i8* align 1 %16, i32 80, i1 false), !dbg !64 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %15, i8* align [filtered] %16, i32 80, i1 false), !dbg !64 ret void, !dbg !65 } @@ -750,59 +750,59 @@ END_FUNCTION define void @__init_struct_(%struct_* %0) { entry: - %self = alloca %struct_*, align 8 - store %struct_* %0, %struct_** %self, align 8 - %deref = load %struct_*, %struct_** %self, align 8 + %self = alloca %struct_*, align [filtered] + store %struct_* %0, %struct_** %self, align [filtered] + %deref = load %struct_*, %struct_** %self, align [filtered] %inner = getelementptr inbounds %struct_, %struct_* %deref, i32 0, i32 0 call void @__init_inner(%inner* %inner) - %deref1 = load %struct_*, %struct_** %self, align 8 + %deref1 = load %struct_*, %struct_** %self, align [filtered] %s = getelementptr inbounds %struct_, %struct_* %deref1, i32 0, i32 2 %1 = bitcast [81 x i8]* %s to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) - %deref2 = load %struct_*, %struct_** %self, align 8 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + %deref2 = load %struct_*, %struct_** %self, align [filtered] %b = getelementptr inbounds %struct_, %struct_* %deref2, i32 0, i32 3 - store i8 1, i8* %b, align 1 - %deref3 = load %struct_*, %struct_** %self, align 8 + store i8 1, i8* %b, align [filtered] + %deref3 = load %struct_*, %struct_** %self, align [filtered] %r = getelementptr inbounds %struct_, %struct_* %deref3, i32 0, i32 4 - store float 0x400921CAC0000000, float* %r, align 4 - %deref4 = load %struct_*, %struct_** %self, align 8 + store float 0x400921CAC0000000, float* %r, align [filtered] + %deref4 = load %struct_*, %struct_** %self, align [filtered] %i = getelementptr inbounds %struct_, %struct_* %deref4, i32 0, i32 6 - store i16 42, i16* %i, align 2 + store i16 42, i16* %i, align [filtered] ret void } define void @__init_inner(%inner* %0) { entry: - %self = alloca %inner*, align 8 - store %inner* %0, %inner** %self, align 8 - %deref = load %inner*, %inner** %self, align 8 + %self = alloca %inner*, align [filtered] + store %inner* %0, %inner** %self, align [filtered] + %deref = load %inner*, %inner** %self, align [filtered] %s = getelementptr inbounds %inner, %inner* %deref, i32 0, i32 0 %1 = bitcast [81 x i8]* %s to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) - %deref1 = load %inner*, %inner** %self, align 8 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + %deref1 = load %inner*, %inner** %self, align [filtered] %b = getelementptr inbounds %inner, %inner* %deref1, i32 0, i32 1 - store i8 1, i8* %b, align 1 - %deref2 = load %inner*, %inner** %self, align 8 + store i8 1, i8* %b, align [filtered] + %deref2 = load %inner*, %inner** %self, align [filtered] %r = getelementptr inbounds %inner, %inner* %deref2, i32 0, i32 2 - store float 0x400921CAC0000000, float* %r, align 4 - %deref3 = load %inner*, %inner** %self, align 8 + store float 0x400921CAC0000000, float* %r, align [filtered] + %deref3 = load %inner*, %inner** %self, align [filtered] %i = getelementptr inbounds %inner, %inner* %deref3, i32 0, i32 4 - store i16 42, i16* %i, align 2 + store i16 42, i16* %i, align [filtered] ret void } define void @__user_init_inner(%inner* %0) { entry: - %self = alloca %inner*, align 8 - store %inner* %0, %inner** %self, align 8 + %self = alloca %inner*, align [filtered] + store %inner* %0, %inner** %self, align [filtered] ret void } define void @__user_init_struct_(%struct_* %0) { entry: - %self = alloca %struct_*, align 8 - store %struct_* %0, %struct_** %self, align 8 - %deref = load %struct_*, %struct_** %self, align 8 + %self = alloca %struct_*, align [filtered] + store %struct_* %0, %struct_** %self, align [filtered] + %deref = load %struct_*, %struct_** %self, align [filtered] %inner = getelementptr inbounds %struct_, %struct_* %deref, i32 0, i32 0 call void @__user_init_inner(%inner* %inner) ret void @@ -945,13 +945,13 @@ fn constants_are_tagged_as_such() { define i32 @bar() !dbg !38 { entry: - %bar = alloca i32, align 4 - %d = alloca i32, align 4 + %bar = alloca i32, align [filtered] + %d = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %d, metadata !41, metadata !DIExpression()), !dbg !42 - store i32 42, i32* %d, align 4 + store i32 42, i32* %d, align [filtered] call void @llvm.dbg.declare(metadata i32* %bar, metadata !43, metadata !DIExpression()), !dbg !44 - store i32 0, i32* %bar, align 4 - %bar_ret = load i32, i32* %bar, align 4, !dbg !45 + store i32 0, i32* %bar, align [filtered] + %bar_ret = load i32, i32* %bar, align [filtered], !dbg !45 ret i32 %bar_ret, !dbg !45 } @@ -960,29 +960,29 @@ fn constants_are_tagged_as_such() { define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__user_init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] ret void } @@ -1083,15 +1083,15 @@ fn test_debug_info_regular_pointer_types() { define void @__init_mystruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__user_init_myStruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } @@ -1197,29 +1197,29 @@ fn test_debug_info_auto_deref_parameters() { define void @__init_mystruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__init_test_with_ref_params(%test_with_ref_params* %0) { entry: - %self = alloca %test_with_ref_params*, align 8 - store %test_with_ref_params* %0, %test_with_ref_params** %self, align 8 + %self = alloca %test_with_ref_params*, align [filtered] + store %test_with_ref_params* %0, %test_with_ref_params** %self, align [filtered] ret void } define void @__user_init_test_with_ref_params(%test_with_ref_params* %0) { entry: - %self = alloca %test_with_ref_params*, align 8 - store %test_with_ref_params* %0, %test_with_ref_params** %self, align 8 + %self = alloca %test_with_ref_params*, align [filtered] + store %test_with_ref_params* %0, %test_with_ref_params** %self, align [filtered] ret void } define void @__user_init_myStruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } @@ -1320,23 +1320,23 @@ fn test_debug_info_auto_deref_alias_pointers() { define void @__init_mystruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__user_init_myStruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__init___Test() { entry: call void @__init_mystruct(%myStruct* @global_struct) - store i32* @global_var, i32** @alias_int, align 8 - store %myStruct* @global_struct, %myStruct** @alias_struct, align 8 + store i32* @global_var, i32** @alias_int, align [filtered] + store %myStruct* @global_struct, %myStruct** @alias_struct, align [filtered] call void @__user_init_myStruct(%myStruct* @global_struct) ret void } @@ -1424,22 +1424,22 @@ fn test_debug_info_mixed_pointer_types() { define void @__init_mixed_ptr(%mixed_ptr* %0) { entry: - %self = alloca %mixed_ptr*, align 8 - store %mixed_ptr* %0, %mixed_ptr** %self, align 8 + %self = alloca %mixed_ptr*, align [filtered] + store %mixed_ptr* %0, %mixed_ptr** %self, align [filtered] ret void } define void @__user_init_mixed_ptr(%mixed_ptr* %0) { entry: - %self = alloca %mixed_ptr*, align 8 - store %mixed_ptr* %0, %mixed_ptr** %self, align 8 + %self = alloca %mixed_ptr*, align [filtered] + store %mixed_ptr* %0, %mixed_ptr** %self, align [filtered] ret void } define void @__init___Test() { entry: call void @__init_mixed_ptr(%mixed_ptr* @mixed_ptr_instance) - store i32** @regular_ptr, i32*** @alias_var, align 8 + store i32** @regular_ptr, i32*** @alias_var, align [filtered] call void @__user_init_mixed_ptr(%mixed_ptr* @mixed_ptr_instance) ret void } @@ -1554,29 +1554,29 @@ fn test_debug_info_auto_deref_reference_to_pointers() { define void @__init_mystruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__init_test_with_reference_params(%test_with_reference_params* %0) { entry: - %self = alloca %test_with_reference_params*, align 8 - store %test_with_reference_params* %0, %test_with_reference_params** %self, align 8 + %self = alloca %test_with_reference_params*, align [filtered] + store %test_with_reference_params* %0, %test_with_reference_params** %self, align [filtered] ret void } define void @__user_init_myStruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__user_init_test_with_reference_params(%test_with_reference_params* %0) { entry: - %self = alloca %test_with_reference_params*, align 8 - store %test_with_reference_params* %0, %test_with_reference_params** %self, align 8 + %self = alloca %test_with_reference_params*, align [filtered] + store %test_with_reference_params* %0, %test_with_reference_params** %self, align [filtered] ret void } @@ -1682,16 +1682,16 @@ fn range_datatype_debug() { define i32 @main() !dbg !4 { entry: - %main = alloca i32, align 4 - %r = alloca i32, align 4 + %main = alloca i32, align [filtered] + %r = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %r, metadata !8, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %r, align 4 + store i32 0, i32* %r, align [filtered] call void @llvm.dbg.declare(metadata i32* %main, metadata !12, metadata !DIExpression()), !dbg !13 - store i32 0, i32* %main, align 4 - store i32 50, i32* %r, align 4, !dbg !14 - %load_r = load i32, i32* %r, align 4, !dbg !15 - store i32 %load_r, i32* %main, align 4, !dbg !15 - %main_ret = load i32, i32* %main, align 4, !dbg !16 + store i32 0, i32* %main, align [filtered] + store i32 50, i32* %r, align [filtered], !dbg !14 + %load_r = load i32, i32* %r, align [filtered], !dbg !15 + store i32 %load_r, i32* %main, align [filtered], !dbg !15 + %main_ret = load i32, i32* %main, align [filtered], !dbg !16 ret i32 %main_ret, !dbg !16 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__aggregate_return_value_variable_in_function.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__aggregate_return_value_variable_in_function.snap index 84a4db90766..b3189f0cb4a 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__aggregate_return_value_variable_in_function.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__aggregate_return_value_variable_in_function.snap @@ -11,11 +11,11 @@ target triple = "[filtered]" define void @myFunc(i8* %0) !dbg !4 { entry: - %myFunc = alloca i8*, align 8 + %myFunc = alloca i8*, align [filtered] call void @llvm.dbg.declare(metadata i8** %myFunc, metadata !16, metadata !DIExpression()), !dbg !17 - store i8* %0, i8** %myFunc, align 8 - %deref = load i8*, i8** %myFunc, align 8, !dbg !18 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %deref, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false), !dbg !18 + store i8* %0, i8** %myFunc, align [filtered] + %deref = load i8*, i8** %myFunc, align [filtered], !dbg !18 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %deref, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false), !dbg !18 ret void, !dbg !19 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__array_size_correctly_set_in_dwarf_info.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__array_size_correctly_set_in_dwarf_info.snap index 6e404bbe9f4..bef8e6de226 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__array_size_correctly_set_in_dwarf_info.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__array_size_correctly_set_in_dwarf_info.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,14 +9,14 @@ target triple = "[filtered]" define i32 @foo() !dbg !4 { entry: - %foo = alloca i32, align 4 - %a = alloca [64 x i32], align 4 + %foo = alloca i32, align [filtered] + %a = alloca [64 x i32], align [filtered] call void @llvm.dbg.declare(metadata [64 x i32]* %a, metadata !9, metadata !DIExpression()), !dbg !14 %0 = bitcast [64 x i32]* %a to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([64 x i32]* getelementptr ([64 x i32], [64 x i32]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([64 x i32]* getelementptr ([64 x i32], [64 x i32]* null, i32 1) to i64), i1 false) call void @llvm.dbg.declare(metadata i32* %foo, metadata !15, metadata !DIExpression()), !dbg !16 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4, !dbg !17 + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered], !dbg !17 ret i32 %foo_ret, !dbg !17 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__assignment_statement_have_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__assignment_statement_have_location.snap index a502b7fa104..c4c59c0f78f 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__assignment_statement_have_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__assignment_statement_have_location.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,11 +9,11 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !4 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %myFunc, align 4 - store i32 3, i32* %myFunc, align 4, !dbg !12 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !13 + store i32 0, i32* %myFunc, align [filtered] + store i32 3, i32* %myFunc, align [filtered], !dbg !12 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !13 ret i32 %myFunc_ret, !dbg !13 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__case_conditions_location_marked.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__case_conditions_location_marked.snap index 2f49ccc588f..8d732d83842 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__case_conditions_location_marked.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__case_conditions_location_marked.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,30 +9,30 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !4 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %myFunc, align 4 - %load_myFunc = load i32, i32* %myFunc, align 4, !dbg !12 + store i32 0, i32* %myFunc, align [filtered] + %load_myFunc = load i32, i32* %myFunc, align [filtered], !dbg !12 switch i32 %load_myFunc, label %else [ i32 1, label %case i32 2, label %case1 ], !dbg !13 case: ; preds = %entry - store i32 1, i32* %myFunc, align 4, !dbg !14 + store i32 1, i32* %myFunc, align [filtered], !dbg !14 br label %continue, !dbg !15 case1: ; preds = %entry - store i32 1, i32* %myFunc, align 4, !dbg !16 + store i32 1, i32* %myFunc, align [filtered], !dbg !16 br label %continue, !dbg !15 else: ; preds = %entry - store i32 1, i32* %myFunc, align 4, !dbg !17 + store i32 1, i32* %myFunc, align [filtered], !dbg !17 br label %continue, !dbg !15 continue: ; preds = %else, %case1, %case - store i32 1, i32* %myFunc, align 4, !dbg !18 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !19 + store i32 1, i32* %myFunc, align [filtered], !dbg !18 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !19 ret i32 %myFunc_ret, !dbg !19 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__exit_statement_have_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__exit_statement_have_location.snap index 7264034f190..93251a0a889 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__exit_statement_have_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__exit_statement_have_location.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,9 +9,9 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !4 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %myFunc, align 4 + store i32 0, i32* %myFunc, align [filtered] br label %condition_check, !dbg !12 condition_check: ; preds = %entry, %continue1 @@ -22,8 +21,8 @@ while_body: ; preds = %condition_check br i1 false, label %condition_body, label %continue1, !dbg !13 continue: ; preds = %condition_body, %condition_check - store i32 1, i32* %myFunc, align 4, !dbg !14 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !15 + store i32 1, i32* %myFunc, align [filtered], !dbg !14 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !15 ret i32 %myFunc_ret, !dbg !15 condition_body: ; preds = %while_body diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__for_conditions_location_marked.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__for_conditions_location_marked.snap index b7700cffec2..8d4ac047f28 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__for_conditions_location_marked.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__for_conditions_location_marked.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,34 +9,34 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !4 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %myFunc, align 4 - store i32 1, i32* %myFunc, align 4, !dbg !12 + store i32 0, i32* %myFunc, align [filtered] + store i32 1, i32* %myFunc, align [filtered], !dbg !12 br i1 true, label %predicate_sle, label %predicate_sge, !dbg !12 predicate_sle: ; preds = %increment, %entry - %0 = load i32, i32* %myFunc, align 4, !dbg !12 + %0 = load i32, i32* %myFunc, align [filtered], !dbg !12 %condition = icmp sle i32 %0, 20, !dbg !12 br i1 %condition, label %loop, label %continue, !dbg !12 predicate_sge: ; preds = %increment, %entry - %1 = load i32, i32* %myFunc, align 4, !dbg !12 + %1 = load i32, i32* %myFunc, align [filtered], !dbg !12 %condition1 = icmp sge i32 %1, 20, !dbg !12 br i1 %condition1, label %loop, label %continue, !dbg !12 loop: ; preds = %predicate_sge, %predicate_sle - store i32 1, i32* %myFunc, align 4, !dbg !13 + store i32 1, i32* %myFunc, align [filtered], !dbg !13 br label %increment, !dbg !14 increment: ; preds = %loop - %2 = load i32, i32* %myFunc, align 4, !dbg !14 + %2 = load i32, i32* %myFunc, align [filtered], !dbg !14 %next = add i32 2, %2, !dbg !14 - store i32 %next, i32* %myFunc, align 4, !dbg !14 + store i32 %next, i32* %myFunc, align [filtered], !dbg !14 br i1 true, label %predicate_sle, label %predicate_sge, !dbg !14 continue: ; preds = %predicate_sge, %predicate_sle - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !15 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !15 ret i32 %myFunc_ret, !dbg !15 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_have_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_have_location.snap index d2a6bed650b..026754e798d 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_have_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_have_location.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,11 +9,11 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !4 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %myFunc, align 4 + store i32 0, i32* %myFunc, align [filtered] %call = call i32 @myFunc(), !dbg !12 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !13 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !13 ret i32 %myFunc_ret, !dbg !13 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_in_expressions_have_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_in_expressions_have_location.snap index 5d089028175..3e9543028fd 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_in_expressions_have_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_in_expressions_have_location.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,12 +9,12 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !4 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %myFunc, align 4 + store i32 0, i32* %myFunc, align [filtered] %call = call i32 @myFunc(), !dbg !12 %tmpVar = add i32 1, %call, !dbg !12 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !13 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !13 ret i32 %myFunc_ret, !dbg !13 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__if_conditions_location_marked.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__if_conditions_location_marked.snap index 8f820044442..e3221d27ed1 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__if_conditions_location_marked.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__if_conditions_location_marked.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,29 +9,29 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !4 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %myFunc, align 4 + store i32 0, i32* %myFunc, align [filtered] br i1 true, label %condition_body, label %branch, !dbg !12 condition_body: ; preds = %entry - store i32 1, i32* %myFunc, align 4, !dbg !13 + store i32 1, i32* %myFunc, align [filtered], !dbg !13 br label %continue, !dbg !14 branch: ; preds = %entry br i1 false, label %condition_body1, label %else, !dbg !15 condition_body1: ; preds = %branch - store i32 1, i32* %myFunc, align 4, !dbg !16 + store i32 1, i32* %myFunc, align [filtered], !dbg !16 br label %continue, !dbg !14 else: ; preds = %branch - store i32 1, i32* %myFunc, align 4, !dbg !17 + store i32 1, i32* %myFunc, align [filtered], !dbg !17 br label %continue, !dbg !14 continue: ; preds = %else, %condition_body1, %condition_body - store i32 1, i32* %myFunc, align 4, !dbg !18 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !19 + store i32 1, i32* %myFunc, align [filtered], !dbg !18 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !19 ret i32 %myFunc_ret, !dbg !19 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__implementation_added_as_subroutine.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__implementation_added_as_subroutine.snap index da48c3a0d1e..81d26fc5c33 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__implementation_added_as_subroutine.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__implementation_added_as_subroutine.snap @@ -15,10 +15,10 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !14 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !17, metadata !DIExpression()), !dbg !19 - store i32 0, i32* %myFunc, align 4 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !20 + store i32 0, i32* %myFunc, align [filtered] + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !20 ret i32 %myFunc_ret, !dbg !20 } @@ -31,8 +31,8 @@ entry: define void @myFb(%myFb* %0) !dbg !26 { entry: call void @llvm.dbg.declare(metadata %myFb* %0, metadata !29, metadata !DIExpression()), !dbg !30 - %this = alloca %myFb*, align 8 - store %myFb* %0, %myFb** %this, align 8 + %this = alloca %myFb*, align [filtered] + store %myFb* %0, %myFb** %this, align [filtered] ret void, !dbg !30 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__nested_function_calls_get_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__nested_function_calls_get_location.snap index d9ee6c7b9df..1934fe717a4 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__nested_function_calls_get_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__nested_function_calls_get_location.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,15 +9,15 @@ target triple = "[filtered]" define i32 @myFunc(i32 %0) !dbg !4 { entry: - %myFunc = alloca i32, align 4 - %x = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] + %x = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %x, metadata !10, metadata !DIExpression()), !dbg !11 - store i32 %0, i32* %x, align 4 + store i32 %0, i32* %x, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !12, metadata !DIExpression()), !dbg !13 - store i32 0, i32* %myFunc, align 4 + store i32 0, i32* %myFunc, align [filtered] %call = call i32 @myFunc(i32 1), !dbg !14 %call1 = call i32 @myFunc(i32 %call), !dbg !15 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !16 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !16 ret i32 %myFunc_ret, !dbg !16 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_callable_expressions_have_no_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_callable_expressions_have_no_location.snap index 842f6b68a2c..3612cb725ef 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_callable_expressions_have_no_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_callable_expressions_have_no_location.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,11 +9,11 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !4 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %myFunc, align 4 - %load_myFunc = load i32, i32* %myFunc, align 4, !dbg !12 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !13 + store i32 0, i32* %myFunc, align [filtered] + %load_myFunc = load i32, i32* %myFunc, align [filtered], !dbg !12 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !13 ret i32 %myFunc_ret, !dbg !13 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_function_pous_have_struct_as_param.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_function_pous_have_struct_as_param.snap index 8fcde6169a8..147f6332d60 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_function_pous_have_struct_as_param.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_function_pous_have_struct_as_param.snap @@ -17,21 +17,21 @@ define void @myProg(%myProg* %0) !dbg !18 { entry: call void @llvm.dbg.declare(metadata %myProg* %0, metadata !22, metadata !DIExpression()), !dbg !23 %x = getelementptr inbounds %myProg, %myProg* %0, i32 0, i32 0 - %load_x = load i32, i32* %x, align 4, !dbg !23 + %load_x = load i32, i32* %x, align [filtered], !dbg !23 %tmpVar = add i32 %load_x, 2, !dbg !23 - store i32 %tmpVar, i32* %x, align 4, !dbg !23 + store i32 %tmpVar, i32* %x, align [filtered], !dbg !23 ret void, !dbg !24 } define void @fb(%fb* %0) !dbg !25 { entry: call void @llvm.dbg.declare(metadata %fb* %0, metadata !28, metadata !DIExpression()), !dbg !29 - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %x = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 - %load_x = load i32, i32* %x, align 4, !dbg !29 + %load_x = load i32, i32* %x, align [filtered], !dbg !29 %tmpVar = add i32 %load_x, 2, !dbg !29 - store i32 %tmpVar, i32* %x, align 4, !dbg !29 + store i32 %tmpVar, i32* %x, align [filtered], !dbg !29 ret void, !dbg !30 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__repeat_conditions_location_marked.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__repeat_conditions_location_marked.snap index 6e17e4d99be..ef45cf543a9 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__repeat_conditions_location_marked.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__repeat_conditions_location_marked.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,25 +9,25 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !4 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %myFunc, align 4 + store i32 0, i32* %myFunc, align [filtered] br label %condition_check, !dbg !12 condition_check: ; preds = %entry, %continue1 br i1 true, label %while_body, label %continue, !dbg !13 while_body: ; preds = %condition_check - store i32 1, i32* %myFunc, align 4, !dbg !14 - %load_myFunc = load i32, i32* %myFunc, align 4, !dbg !13 + store i32 1, i32* %myFunc, align [filtered], !dbg !14 + %load_myFunc = load i32, i32* %myFunc, align [filtered], !dbg !13 %tmpVar = icmp sgt i32 %load_myFunc, 10, !dbg !13 %0 = zext i1 %tmpVar to i8, !dbg !13 %1 = icmp ne i8 %0, 0, !dbg !13 br i1 %1, label %condition_body, label %continue1, !dbg !13 continue: ; preds = %condition_body, %condition_check - store i32 1, i32* %myFunc, align 4, !dbg !15 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !16 + store i32 1, i32* %myFunc, align [filtered], !dbg !15 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !16 ret i32 %myFunc_ret, !dbg !16 condition_body: ; preds = %while_body diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__return_statement_have_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__return_statement_have_location.snap index 4d8bf4fccf3..4488067f933 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__return_statement_have_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__return_statement_have_location.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,14 +9,14 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !4 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %myFunc, align 4 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !12 + store i32 0, i32* %myFunc, align [filtered] + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !12 ret i32 %myFunc_ret, !dbg !12 buffer_block: ; No predecessors! - %myFunc_ret1 = load i32, i32* %myFunc, align 4, !dbg !13 + %myFunc_ret1 = load i32, i32* %myFunc, align [filtered], !dbg !13 ret i32 %myFunc_ret1, !dbg !13 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_and_vartemp_variables_in_pous_added_as_local.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_and_vartemp_variables_in_pous_added_as_local.snap index c948ce2acbd..6543db20af7 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_and_vartemp_variables_in_pous_added_as_local.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_and_vartemp_variables_in_pous_added_as_local.snap @@ -15,51 +15,51 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !14 { entry: - %myFunc = alloca i32, align 4 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] + %a = alloca i32, align [filtered] + %b = alloca i32, align [filtered] + %c = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %a, metadata !17, metadata !DIExpression()), !dbg !19 - store i32 0, i32* %a, align 4 + store i32 0, i32* %a, align [filtered] call void @llvm.dbg.declare(metadata i32* %b, metadata !20, metadata !DIExpression()), !dbg !21 - store i32 0, i32* %b, align 4 + store i32 0, i32* %b, align [filtered] call void @llvm.dbg.declare(metadata i32* %c, metadata !22, metadata !DIExpression()), !dbg !23 - store i32 0, i32* %c, align 4 + store i32 0, i32* %c, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !24, metadata !DIExpression()), !dbg !25 - store i32 0, i32* %myFunc, align 4 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !26 + store i32 0, i32* %myFunc, align [filtered] + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !26 ret i32 %myFunc_ret, !dbg !26 } define void @myPrg(%myPrg* %0) !dbg !27 { entry: call void @llvm.dbg.declare(metadata %myPrg* %0, metadata !30, metadata !DIExpression()), !dbg !31 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca i32, align 4 + %a = alloca i32, align [filtered] + %b = alloca i32, align [filtered] + %c = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %a, metadata !32, metadata !DIExpression()), !dbg !33 - store i32 0, i32* %a, align 4 + store i32 0, i32* %a, align [filtered] call void @llvm.dbg.declare(metadata i32* %b, metadata !34, metadata !DIExpression()), !dbg !35 - store i32 0, i32* %b, align 4 + store i32 0, i32* %b, align [filtered] call void @llvm.dbg.declare(metadata i32* %c, metadata !36, metadata !DIExpression()), !dbg !37 - store i32 0, i32* %c, align 4 + store i32 0, i32* %c, align [filtered] ret void, !dbg !31 } define void @myFb(%myFb* %0) !dbg !38 { entry: call void @llvm.dbg.declare(metadata %myFb* %0, metadata !41, metadata !DIExpression()), !dbg !42 - %this = alloca %myFb*, align 8 - store %myFb* %0, %myFb** %this, align 8 - %a = alloca i32, align 4 - %b = alloca i32, align 4 - %c = alloca i32, align 4 + %this = alloca %myFb*, align [filtered] + store %myFb* %0, %myFb** %this, align [filtered] + %a = alloca i32, align [filtered] + %b = alloca i32, align [filtered] + %c = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %a, metadata !43, metadata !DIExpression()), !dbg !44 - store i32 0, i32* %a, align 4 + store i32 0, i32* %a, align [filtered] call void @llvm.dbg.declare(metadata i32* %b, metadata !45, metadata !DIExpression()), !dbg !46 - store i32 0, i32* %b, align 4 + store i32 0, i32* %b, align [filtered] call void @llvm.dbg.declare(metadata i32* %c, metadata !47, metadata !DIExpression()), !dbg !48 - store i32 0, i32* %c, align 4 + store i32 0, i32* %c, align [filtered] ret void, !dbg !42 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_in_out_inout_in_function_added_as_params.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_in_out_inout_in_function_added_as_params.snap index 96c08fc85af..e3fc83ca3d5 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_in_out_inout_in_function_added_as_params.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_in_out_inout_in_function_added_as_params.snap @@ -9,18 +9,18 @@ target triple = "[filtered]" define i32 @myFunc(i16* %0) !dbg !4 { entry: - %myFunc = alloca i32, align 4 - %x = alloca i16*, align 8 + %myFunc = alloca i32, align [filtered] + %x = alloca i16*, align [filtered] call void @llvm.dbg.declare(metadata i16** %x, metadata !12, metadata !DIExpression()), !dbg !13 - store i16* %0, i16** %x, align 8 + store i16* %0, i16** %x, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !14, metadata !DIExpression()), !dbg !16 - store i32 0, i32* %myFunc, align 4 - %deref = load i16*, i16** %x, align 8, !dbg !17 - %load_x = load i16, i16* %deref, align 2, !dbg !17 + store i32 0, i32* %myFunc, align [filtered] + %deref = load i16*, i16** %x, align [filtered], !dbg !17 + %load_x = load i16, i16* %deref, align [filtered], !dbg !17 %1 = sext i16 %load_x to i32, !dbg !17 %tmpVar = add i32 %1, 2, !dbg !17 - store i32 %tmpVar, i32* %myFunc, align 4, !dbg !17 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !18 + store i32 %tmpVar, i32* %myFunc, align [filtered], !dbg !17 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !18 ret i32 %myFunc_ret, !dbg !18 } diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__while_conditions_location_marked.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__while_conditions_location_marked.snap index 770af9dec12..8a4b81a1a81 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__while_conditions_location_marked.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__while_conditions_location_marked.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests/expression_debugging.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,16 +9,16 @@ target triple = "[filtered]" define i32 @myFunc() !dbg !4 { entry: - %myFunc = alloca i32, align 4 + %myFunc = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %myFunc, metadata !9, metadata !DIExpression()), !dbg !11 - store i32 0, i32* %myFunc, align 4 + store i32 0, i32* %myFunc, align [filtered] br label %condition_check, !dbg !12 condition_check: ; preds = %entry, %continue1 br i1 true, label %while_body, label %continue, !dbg !13 while_body: ; preds = %condition_check - %load_myFunc = load i32, i32* %myFunc, align 4, !dbg !13 + %load_myFunc = load i32, i32* %myFunc, align [filtered], !dbg !13 %tmpVar = icmp sgt i32 %load_myFunc, 1, !dbg !13 %0 = zext i1 %tmpVar to i8, !dbg !13 %1 = icmp ne i8 %0, 0, !dbg !13 @@ -27,8 +26,8 @@ while_body: ; preds = %condition_check br i1 %tmpVar2, label %condition_body, label %continue1, !dbg !13 continue: ; preds = %condition_body, %condition_check - store i32 1, i32* %myFunc, align 4, !dbg !14 - %myFunc_ret = load i32, i32* %myFunc, align 4, !dbg !15 + store i32 1, i32* %myFunc, align [filtered], !dbg !14 + %myFunc_ret = load i32, i32* %myFunc, align [filtered], !dbg !15 ret i32 %myFunc_ret, !dbg !15 condition_body: ; preds = %while_body @@ -38,7 +37,7 @@ buffer_block: ; No predecessors! br label %continue1, !dbg !16 continue1: ; preds = %buffer_block, %while_body - store i32 1, i32* %myFunc, align 4, !dbg !17 + store i32 1, i32* %myFunc, align [filtered], !dbg !17 br label %condition_check, !dbg !12 } diff --git a/src/codegen/tests/directaccess_test.rs b/src/codegen/tests/directaccess_test.rs index b7d3c99c767..087e88266dd 100644 --- a/src/codegen/tests/directaccess_test.rs +++ b/src/codegen/tests/directaccess_test.rs @@ -153,8 +153,8 @@ fn direct_acess_in_output_assignment_implicit_explicit_and_mixed() { define void @FOO(%FOO* %0) { entry: - %this = alloca %FOO*, align 8 - store %FOO* %0, %FOO** %this, align 8 + %this = alloca %FOO*, align [filtered] + store %FOO* %0, %FOO** %this, align [filtered] %X = getelementptr inbounds %FOO, %FOO* %0, i32 0, i32 0 %Y = getelementptr inbounds %FOO, %FOO* %0, i32 0, i32 1 ret void @@ -162,59 +162,59 @@ fn direct_acess_in_output_assignment_implicit_explicit_and_mixed() { define i32 @main() { entry: - %main = alloca i32, align 4 - %error_bits = alloca i8, align 1 - %f = alloca %FOO, align 8 - store i8 0, i8* %error_bits, align 1 + %main = alloca i32, align [filtered] + %error_bits = alloca i8, align [filtered] + %f = alloca %FOO, align [filtered] + store i8 0, i8* %error_bits, align [filtered] %0 = bitcast %FOO* %f to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%FOO, %FOO* @__FOO__init, i32 0, i32 0), i64 ptrtoint (%FOO* getelementptr (%FOO, %FOO* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds (%FOO, %FOO* @__FOO__init, i32 0, i32 0), i64 ptrtoint (%FOO* getelementptr (%FOO, %FOO* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] %1 = getelementptr inbounds %FOO, %FOO* %f, i32 0, i32 0 - %load_error_bits = load i8, i8* %error_bits, align 1 + %load_error_bits = load i8, i8* %error_bits, align [filtered] %shift = lshr i8 %load_error_bits, 0 %2 = and i8 %shift, 1 - store i8 %2, i8* %1, align 1 + store i8 %2, i8* %1, align [filtered] call void @FOO(%FOO* %f) %3 = getelementptr inbounds %FOO, %FOO* %f, i32 0, i32 1 - %4 = load i8, i8* %error_bits, align 1 - %5 = load i8, i8* %3, align 1 + %4 = load i8, i8* %error_bits, align [filtered] + %5 = load i8, i8* %3, align [filtered] %erase = and i8 %4, -2 %value = shl i8 %5, 0 %or = or i8 %erase, %value - store i8 %or, i8* %error_bits, align 1 + store i8 %or, i8* %error_bits, align [filtered] %6 = getelementptr inbounds %FOO, %FOO* %f, i32 0, i32 0 - %load_error_bits1 = load i8, i8* %error_bits, align 1 + %load_error_bits1 = load i8, i8* %error_bits, align [filtered] %shift2 = lshr i8 %load_error_bits1, 0 %7 = and i8 %shift2, 1 - store i8 %7, i8* %6, align 1 + store i8 %7, i8* %6, align [filtered] call void @FOO(%FOO* %f) %8 = getelementptr inbounds %FOO, %FOO* %f, i32 0, i32 1 - %9 = load i8, i8* %error_bits, align 1 - %10 = load i8, i8* %8, align 1 + %9 = load i8, i8* %error_bits, align [filtered] + %10 = load i8, i8* %8, align [filtered] %erase3 = and i8 %9, -2 %value4 = shl i8 %10, 0 %or5 = or i8 %erase3, %value4 - store i8 %or5, i8* %error_bits, align 1 + store i8 %or5, i8* %error_bits, align [filtered] %11 = getelementptr inbounds %FOO, %FOO* %f, i32 0, i32 0 - %load_error_bits6 = load i8, i8* %error_bits, align 1 + %load_error_bits6 = load i8, i8* %error_bits, align [filtered] %shift7 = lshr i8 %load_error_bits6, 0 %12 = and i8 %shift7, 1 - store i8 %12, i8* %11, align 1 + store i8 %12, i8* %11, align [filtered] call void @FOO(%FOO* %f) %13 = getelementptr inbounds %FOO, %FOO* %f, i32 0, i32 1 - %14 = load i8, i8* %error_bits, align 1 - %15 = load i8, i8* %13, align 1 + %14 = load i8, i8* %error_bits, align [filtered] + %15 = load i8, i8* %13, align [filtered] %erase8 = and i8 %14, -2 %value9 = shl i8 %15, 0 %or10 = or i8 %erase8, %value9 - store i8 %or10, i8* %error_bits, align 1 + store i8 %or10, i8* %error_bits, align [filtered] %16 = getelementptr inbounds %FOO, %FOO* %f, i32 0, i32 0 - %load_error_bits11 = load i8, i8* %error_bits, align 1 + %load_error_bits11 = load i8, i8* %error_bits, align [filtered] %shift12 = lshr i8 %load_error_bits11, 0 %17 = and i8 %shift12, 1 - store i8 %17, i8* %16, align 1 + store i8 %17, i8* %16, align [filtered] call void @FOO(%FOO* %f) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } @@ -258,30 +258,30 @@ fn direct_acess_in_output_assignment_with_simple_expression() { define void @FOO(%FOO* %0) { entry: - %this = alloca %FOO*, align 8 - store %FOO* %0, %FOO** %this, align 8 + %this = alloca %FOO*, align [filtered] + store %FOO* %0, %FOO** %this, align [filtered] %Q = getelementptr inbounds %FOO, %FOO* %0, i32 0, i32 0 ret void } define i32 @main() { entry: - %main = alloca i32, align 4 - %error_bits = alloca i8, align 1 - %f = alloca %FOO, align 8 - store i8 -17, i8* %error_bits, align 1 + %main = alloca i32, align [filtered] + %error_bits = alloca i8, align [filtered] + %f = alloca %FOO, align [filtered] + store i8 -17, i8* %error_bits, align [filtered] %0 = bitcast %FOO* %f to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%FOO, %FOO* @__FOO__init, i32 0, i32 0), i64 ptrtoint (%FOO* getelementptr (%FOO, %FOO* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds (%FOO, %FOO* @__FOO__init, i32 0, i32 0), i64 ptrtoint (%FOO* getelementptr (%FOO, %FOO* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] call void @FOO(%FOO* %f) %1 = getelementptr inbounds %FOO, %FOO* %f, i32 0, i32 0 - %2 = load i8, i8* %error_bits, align 1 - %3 = load i8, i8* %1, align 1 + %2 = load i8, i8* %error_bits, align [filtered] + %3 = load i8, i8* %1, align [filtered] %erase = and i8 %2, -17 %value = shl i8 %3, 4 %or = or i8 %erase, %value - store i8 %or, i8* %error_bits, align 1 - %main_ret = load i32, i32* %main, align 4 + store i8 %or, i8* %error_bits, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } @@ -325,30 +325,30 @@ fn direct_acess_in_output_assignment_with_simple_expression_implicit() { define void @FOO(%FOO* %0) { entry: - %this = alloca %FOO*, align 8 - store %FOO* %0, %FOO** %this, align 8 + %this = alloca %FOO*, align [filtered] + store %FOO* %0, %FOO** %this, align [filtered] %Q = getelementptr inbounds %FOO, %FOO* %0, i32 0, i32 0 ret void } define i32 @main() { entry: - %main = alloca i32, align 4 - %error_bits = alloca i8, align 1 - %f = alloca %FOO, align 8 - store i8 -17, i8* %error_bits, align 1 + %main = alloca i32, align [filtered] + %error_bits = alloca i8, align [filtered] + %f = alloca %FOO, align [filtered] + store i8 -17, i8* %error_bits, align [filtered] %0 = bitcast %FOO* %f to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%FOO, %FOO* @__FOO__init, i32 0, i32 0), i64 ptrtoint (%FOO* getelementptr (%FOO, %FOO* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds (%FOO, %FOO* @__FOO__init, i32 0, i32 0), i64 ptrtoint (%FOO* getelementptr (%FOO, %FOO* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] call void @FOO(%FOO* %f) %1 = getelementptr inbounds %FOO, %FOO* %f, i32 0, i32 0 - %2 = load i8, i8* %error_bits, align 1 - %3 = load i8, i8* %1, align 1 + %2 = load i8, i8* %error_bits, align [filtered] + %3 = load i8, i8* %1, align [filtered] %erase = and i8 %2, -17 %value = shl i8 %3, 4 %or = or i8 %erase, %value - store i8 %or, i8* %error_bits, align 1 - %main_ret = load i32, i32* %main, align 4 + store i8 %or, i8* %error_bits, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } @@ -405,45 +405,45 @@ fn direct_acess_in_output_assignment_with_complexe_expression() { define void @QUUX(%QUUX* %0) { entry: - %this = alloca %QUUX*, align 8 - store %QUUX* %0, %QUUX** %this, align 8 + %this = alloca %QUUX*, align [filtered] + store %QUUX* %0, %QUUX** %this, align [filtered] %Q = getelementptr inbounds %QUUX, %QUUX* %0, i32 0, i32 0 ret void } define i32 @main() { entry: - %main = alloca i32, align 4 - %foo = alloca %foo_struct, align 8 - %f = alloca %QUUX, align 8 + %main = alloca i32, align [filtered] + %foo = alloca %foo_struct, align [filtered] + %f = alloca %QUUX, align [filtered] %0 = bitcast %foo_struct* %foo to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%foo_struct* @__foo_struct__init to i8*), i64 ptrtoint (%foo_struct* getelementptr (%foo_struct, %foo_struct* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%foo_struct* @__foo_struct__init to i8*), i64 ptrtoint (%foo_struct* getelementptr (%foo_struct, %foo_struct* null, i32 1) to i64), i1 false) %1 = bitcast %QUUX* %f to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 getelementptr inbounds (%QUUX, %QUUX* @__QUUX__init, i32 0, i32 0), i64 ptrtoint (%QUUX* getelementptr (%QUUX, %QUUX* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds (%QUUX, %QUUX* @__QUUX__init, i32 0, i32 0), i64 ptrtoint (%QUUX* getelementptr (%QUUX, %QUUX* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] call void @QUUX(%QUUX* %f) %bar = getelementptr inbounds %foo_struct, %foo_struct* %foo, i32 0, i32 0 %baz = getelementptr inbounds %bar_struct, %bar_struct* %bar, i32 0, i32 0 %2 = getelementptr inbounds %QUUX, %QUUX* %f, i32 0, i32 0 - %3 = load i64, i64* %baz, align 8 - %4 = load i8, i8* %2, align 1 + %3 = load i64, i64* %baz, align [filtered] + %4 = load i8, i8* %2, align [filtered] %erase = and i64 %3, -281474976710657 %5 = zext i8 %4 to i64 %value = shl i64 %5, 48 %or = or i64 %erase, %value - store i64 %or, i64* %baz, align 8 + store i64 %or, i64* %baz, align [filtered] call void @QUUX(%QUUX* %f) %bar1 = getelementptr inbounds %foo_struct, %foo_struct* %foo, i32 0, i32 0 %baz2 = getelementptr inbounds %bar_struct, %bar_struct* %bar1, i32 0, i32 0 %6 = getelementptr inbounds %QUUX, %QUUX* %f, i32 0, i32 0 - %7 = load i64, i64* %baz2, align 8 - %8 = load i8, i8* %6, align 1 + %7 = load i64, i64* %baz2, align [filtered] + %8 = load i8, i8* %6, align [filtered] %erase3 = and i64 %7, -1125899906842625 %9 = zext i8 %8 to i64 %value4 = shl i64 %9, 50 %or5 = or i64 %erase3, %value4 - store i64 %or5, i64* %baz2, align 8 - %main_ret = load i32, i32* %main, align 4 + store i64 %or5, i64* %baz2, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/expression_tests.rs b/src/codegen/tests/expression_tests.rs index 44bd3159764..5faeb1f97a1 100644 --- a/src/codegen/tests/expression_tests.rs +++ b/src/codegen/tests/expression_tests.rs @@ -306,8 +306,8 @@ fn builtin_function_call_adr() { entry: %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - store i32* %b, i32** %a, align 8 - store i32* %b, i32** %a, align 8 + store i32* %b, i32** %a, align [filtered] + store i32* %b, i32** %a, align [filtered] ret void } "#); @@ -344,8 +344,8 @@ fn builtin_function_call_ref() { entry: %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - store i32* %b, i32** %a, align 8 - store i32* %b, i32** %a, align 8 + store i32* %b, i32** %a, align [filtered] + store i32* %b, i32** %a, align [filtered] ret void } "#); @@ -406,14 +406,14 @@ fn builtin_function_call_sel() { %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %c = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_b = load i32, i32* %b, align 4 - %load_c = load i32, i32* %c, align 4 + %load_b = load i32, i32* %b, align [filtered] + %load_c = load i32, i32* %c, align [filtered] %1 = select i1 true, i32 %load_c, i32 %load_b - store i32 %1, i32* %a, align 4 - %load_b1 = load i32, i32* %b, align 4 - %load_c2 = load i32, i32* %c, align 4 + store i32 %1, i32* %a, align [filtered] + %load_b1 = load i32, i32* %b, align [filtered] + %load_c2 = load i32, i32* %c, align [filtered] %2 = select i1 true, i32 %load_c2, i32 %load_b1 - store i32 %2, i32* %a, align 4 + store i32 %2, i32* %a, align [filtered] ret void } "#); @@ -459,10 +459,10 @@ fn builtin_function_call_move() { entry: %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - %load_b = load i32, i32* %b, align 4 - store i32 %load_b, i32* %a, align 4 - %load_b1 = load i32, i32* %b, align 4 - store i32 %load_b1, i32* %a, align 4 + %load_b = load i32, i32* %b, align [filtered] + store i32 %load_b, i32* %a, align [filtered] + %load_b1 = load i32, i32* %b, align [filtered] + store i32 %load_b1, i32* %a, align [filtered] ret void } "#); @@ -495,8 +495,8 @@ fn builtin_function_call_sizeof() { entry: %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - store i32 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i32), i32* %a, align 4 - store i32 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i32), i32* %a, align 4 + store i32 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i32), i32* %a, align [filtered] + store i32 ptrtoint (i64* getelementptr (i64, i64* null, i32 1) to i32), i32* %a, align [filtered] ret void } "#); @@ -540,38 +540,38 @@ fn builtin_function_call_lower_bound() { entry: %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - %auto_deref = load [2 x i32], [2 x i32]* %a, align 4 + %auto_deref = load [2 x i32], [2 x i32]* %a, align [filtered] %outer_arr_gep = getelementptr inbounds [2 x i32], [2 x i32]* %a, i32 0, i32 0 - %vla_struct = alloca %__foo_vla, align 8 + %vla_struct = alloca %__foo_vla, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 1 - store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align 4 - store i32* %outer_arr_gep, i32** %vla_array_gep, align 8 - %1 = load %__foo_vla, %__foo_vla* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_vla, align 8 - store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align 8 + store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align [filtered] + store i32* %outer_arr_gep, i32** %vla_array_gep, align [filtered] + %1 = load %__foo_vla, %__foo_vla* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_vla, align [filtered] + store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align [filtered] %call = call i32 @foo(%__foo_vla* %vla_struct_ptr) - store i32 %call, i32* %b, align 4 + store i32 %call, i32* %b, align [filtered] ret void } define i32 @foo(%__foo_vla* %0) { entry: - %foo = alloca i32, align 4 - %vla = alloca %__foo_vla*, align 8 - store %__foo_vla* %0, %__foo_vla** %vla, align 8 - store i32 0, i32* %foo, align 4 - %deref = load %__foo_vla*, %__foo_vla** %vla, align 8 + %foo = alloca i32, align [filtered] + %vla = alloca %__foo_vla*, align [filtered] + store %__foo_vla* %0, %__foo_vla** %vla, align [filtered] + store i32 0, i32* %foo, align [filtered] + %deref = load %__foo_vla*, %__foo_vla** %vla, align [filtered] %dim = getelementptr inbounds %__foo_vla, %__foo_vla* %deref, i32 0, i32 1 %1 = getelementptr inbounds [2 x i32], [2 x i32]* %dim, i32 0, i32 0 - %2 = load i32, i32* %1, align 4 - store i32 %2, i32* %foo, align 4 - %deref1 = load %__foo_vla*, %__foo_vla** %vla, align 8 + %2 = load i32, i32* %1, align [filtered] + store i32 %2, i32* %foo, align [filtered] + %deref1 = load %__foo_vla*, %__foo_vla** %vla, align [filtered] %dim2 = getelementptr inbounds %__foo_vla, %__foo_vla* %deref1, i32 0, i32 1 %3 = getelementptr inbounds [2 x i32], [2 x i32]* %dim2, i32 0, i32 0 - %4 = load i32, i32* %3, align 4 - store i32 %4, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %4 = load i32, i32* %3, align [filtered] + store i32 %4, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } "#); @@ -615,38 +615,38 @@ fn builtin_function_call_upper_bound() { entry: %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - %auto_deref = load [2 x i32], [2 x i32]* %a, align 4 + %auto_deref = load [2 x i32], [2 x i32]* %a, align [filtered] %outer_arr_gep = getelementptr inbounds [2 x i32], [2 x i32]* %a, i32 0, i32 0 - %vla_struct = alloca %__foo_vla, align 8 + %vla_struct = alloca %__foo_vla, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 1 - store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align 4 - store i32* %outer_arr_gep, i32** %vla_array_gep, align 8 - %1 = load %__foo_vla, %__foo_vla* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_vla, align 8 - store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align 8 + store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align [filtered] + store i32* %outer_arr_gep, i32** %vla_array_gep, align [filtered] + %1 = load %__foo_vla, %__foo_vla* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_vla, align [filtered] + store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align [filtered] %call = call i32 @foo(%__foo_vla* %vla_struct_ptr) - store i32 %call, i32* %b, align 4 + store i32 %call, i32* %b, align [filtered] ret void } define i32 @foo(%__foo_vla* %0) { entry: - %foo = alloca i32, align 4 - %vla = alloca %__foo_vla*, align 8 - store %__foo_vla* %0, %__foo_vla** %vla, align 8 - store i32 0, i32* %foo, align 4 - %deref = load %__foo_vla*, %__foo_vla** %vla, align 8 + %foo = alloca i32, align [filtered] + %vla = alloca %__foo_vla*, align [filtered] + store %__foo_vla* %0, %__foo_vla** %vla, align [filtered] + store i32 0, i32* %foo, align [filtered] + %deref = load %__foo_vla*, %__foo_vla** %vla, align [filtered] %dim = getelementptr inbounds %__foo_vla, %__foo_vla* %deref, i32 0, i32 1 %1 = getelementptr inbounds [2 x i32], [2 x i32]* %dim, i32 0, i32 1 - %2 = load i32, i32* %1, align 4 - store i32 %2, i32* %foo, align 4 - %deref1 = load %__foo_vla*, %__foo_vla** %vla, align 8 + %2 = load i32, i32* %1, align [filtered] + store i32 %2, i32* %foo, align [filtered] + %deref1 = load %__foo_vla*, %__foo_vla** %vla, align [filtered] %dim2 = getelementptr inbounds %__foo_vla, %__foo_vla* %deref1, i32 0, i32 1 %3 = getelementptr inbounds [2 x i32], [2 x i32]* %dim2, i32 0, i32 1 - %4 = load i32, i32* %3, align 4 - store i32 %4, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %4 = load i32, i32* %3, align [filtered] + store i32 %4, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } "#); @@ -977,16 +977,16 @@ fn builtin_div_with_named_arguments() { define i32 @main() { entry: - %main = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 20, i32* %x, align 4 - store i32 4, i32* %y, align 4 - store i32 0, i32* %main, align 4 - %load_x = load i32, i32* %x, align 4 - %load_y = load i32, i32* %y, align 4 + %main = alloca i32, align [filtered] + %x = alloca i32, align [filtered] + %y = alloca i32, align [filtered] + store i32 20, i32* %x, align [filtered] + store i32 4, i32* %y, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x = load i32, i32* %x, align [filtered] + %load_y = load i32, i32* %y, align [filtered] %tmpVar = sdiv i32 %load_x, %load_y - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } "#); @@ -1014,16 +1014,16 @@ fn builtin_sub_with_named_arguments() { define i32 @main() { entry: - %main = alloca i32, align 4 - %x = alloca i32, align 4 - %y = alloca i32, align 4 - store i32 20, i32* %x, align 4 - store i32 4, i32* %y, align 4 - store i32 0, i32* %main, align 4 - %load_x = load i32, i32* %x, align 4 - %load_y = load i32, i32* %y, align 4 + %main = alloca i32, align [filtered] + %x = alloca i32, align [filtered] + %y = alloca i32, align [filtered] + store i32 20, i32* %x, align [filtered] + store i32 4, i32* %y, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x = load i32, i32* %x, align [filtered] + %load_y = load i32, i32* %y, align [filtered] %tmpVar = sub i32 %load_x, %load_y - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } "#); @@ -1064,20 +1064,20 @@ fn global_namespace_operator() { define void @main(%main* %0) { entry: %foo = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - %load_foo = load i32, i32* @foo, align 4 - store i32 %load_foo, i32* %foo, align 4 - %load_foo1 = load i32, i32* @foo, align 4 + %load_foo = load i32, i32* @foo, align [filtered] + store i32 %load_foo, i32* %foo, align [filtered] + %load_foo1 = load i32, i32* @foo, align [filtered] %tmpVar = add i32 %load_foo1, 1 - store i32 %tmpVar, i32* %foo, align 4 - %load_foo2 = load i32, i32* @foo, align 4 - %load_foo3 = load i32, i32* @foo, align 4 + store i32 %tmpVar, i32* %foo, align [filtered] + %load_foo2 = load i32, i32* @foo, align [filtered] + %load_foo3 = load i32, i32* @foo, align [filtered] %tmpVar4 = add i32 %load_foo2, %load_foo3 - store i32 %tmpVar4, i32* %foo, align 4 - %load_foo5 = load i32, i32* %foo, align 4 - store i32 %load_foo5, i32* @foo, align 4 - %load_foo6 = load i32, i32* @foo, align 4 + store i32 %tmpVar4, i32* %foo, align [filtered] + %load_foo5 = load i32, i32* %foo, align [filtered] + store i32 %load_foo5, i32* @foo, align [filtered] + %load_foo6 = load i32, i32* @foo, align [filtered] %tmpVar7 = add i32 %load_foo6, 1 - store i32 %tmpVar7, i32* @foo, align 4 + store i32 %tmpVar7, i32* @foo, align [filtered] ret void } "#); @@ -1120,28 +1120,28 @@ fn unary_plus_expression_test() { define void @exp(%exp* %0) { entry: %x = getelementptr inbounds %exp, %exp* %0, i32 0, i32 0 - %load_x = load i32, i32* %x, align 4 - %load_x1 = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] + %load_x1 = load i32, i32* %x, align [filtered] %tmpVar = add i32 %load_x1, 4 - store i32 %tmpVar, i32* %x, align 4 - store i32 1, i32* %x, align 4 - %load_x2 = load i32, i32* %x, align 4 + store i32 %tmpVar, i32* %x, align [filtered] + store i32 1, i32* %x, align [filtered] + %load_x2 = load i32, i32* %x, align [filtered] %tmpVar3 = sub i32 0, %load_x2 - %load_x4 = load i32, i32* %x, align 4 + %load_x4 = load i32, i32* %x, align [filtered] %call = call i32 @foo(i32 %load_x4) - store i32 %call, i32* %x, align 4 + store i32 %call, i32* %x, align [filtered] ret void } define i32 @foo(i32 %0) { entry: - %foo = alloca i32, align 4 - %x = alloca i32, align 4 - store i32 %0, i32* %x, align 4 - store i32 0, i32* %foo, align 4 - %load_x = load i32, i32* %x, align 4 - store i32 %load_x, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %x = alloca i32, align [filtered] + store i32 %0, i32* %x, align [filtered] + store i32 0, i32* %foo, align [filtered] + %load_x = load i32, i32* %x, align [filtered] + store i32 %load_x, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } "#) diff --git a/src/codegen/tests/fnptr.rs b/src/codegen/tests/fnptr.rs index fd962c8d07e..0dd0c6ddef3 100644 --- a/src/codegen/tests/fnptr.rs +++ b/src/codegen/tests/fnptr.rs @@ -33,26 +33,26 @@ fn function_pointer_method_no_parameters() { define void @A(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] ret void } define void @A__foo(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] ret void } define void @main() { entry: - %instanceA = alloca %A, align 8 - %fooPtr = alloca void (%A*)*, align 8 + %instanceA = alloca %A, align [filtered] + %fooPtr = alloca void (%A*)*, align [filtered] %0 = bitcast %A* %instanceA to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) - store void (%A*)* @A__foo, void (%A*)** %fooPtr, align 8 - %1 = load void (%A*)*, void (%A*)** %fooPtr, align 8 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) + store void (%A*)* @A__foo, void (%A*)** %fooPtr, align [filtered] + %1 = load void (%A*)*, void (%A*)** %fooPtr, align [filtered] call void %1(%A* %instanceA) ret void } @@ -96,29 +96,29 @@ fn function_pointer_method_with_return_type() { define void @A(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] ret void } define i32 @A__foo(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 - %A.foo = alloca i32, align 4 - store i32 0, i32* %A.foo, align 4 - %A__foo_ret = load i32, i32* %A.foo, align 4 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] + %A.foo = alloca i32, align [filtered] + store i32 0, i32* %A.foo, align [filtered] + %A__foo_ret = load i32, i32* %A.foo, align [filtered] ret i32 %A__foo_ret } define void @main() { entry: - %instanceA = alloca %A, align 8 - %fooPtr = alloca i32 (%A*)*, align 8 + %instanceA = alloca %A, align [filtered] + %fooPtr = alloca i32 (%A*)*, align [filtered] %0 = bitcast %A* %instanceA to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) - store i32 (%A*)* @A__foo, i32 (%A*)** %fooPtr, align 8 - %1 = load i32 (%A*)*, i32 (%A*)** %fooPtr, align 8 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) + store i32 (%A*)* @A__foo, i32 (%A*)** %fooPtr, align [filtered] + %1 = load i32 (%A*)*, i32 (%A*)** %fooPtr, align [filtered] %fnptr_call = call i32 %1(%A* %instanceA) ret void } @@ -170,56 +170,56 @@ fn function_pointer_method_with_return_type_aggregate() { define void @A(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] ret void } define void @A__foo(%A* %0, i8* %1) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 - %foo = alloca i8*, align 8 - store i8* %1, i8** %foo, align 8 - %deref = load i8*, i8** %foo, align 8 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %deref, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] + %foo = alloca i8*, align [filtered] + store i8* %1, i8** %foo, align [filtered] + %deref = load i8*, i8** %foo, align [filtered] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %deref, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) ret void } define void @A__bar(%A* %0, i32* %1) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 - %bar = alloca i32*, align 8 - store i32* %1, i32** %bar, align 8 - %deref = load i32*, i32** %bar, align 8 - store [5 x i32] [i32 1, i32 2, i32 3, i32 4, i32 5], i32* %deref, align 4 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] + %bar = alloca i32*, align [filtered] + store i32* %1, i32** %bar, align [filtered] + %deref = load i32*, i32** %bar, align [filtered] + store [5 x i32] [i32 1, i32 2, i32 3, i32 4, i32 5], i32* %deref, align [filtered] ret void } define void @main() { entry: - %instanceA = alloca %A, align 8 - %fooPtr = alloca void (%A*, [81 x i8]*)*, align 8 - %barPtr = alloca void (%A*, [5 x i32]*)*, align 8 + %instanceA = alloca %A, align [filtered] + %fooPtr = alloca void (%A*, [81 x i8]*)*, align [filtered] + %barPtr = alloca void (%A*, [5 x i32]*)*, align [filtered] %0 = bitcast %A* %instanceA to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) - store void (%A*, [81 x i8]*)* bitcast (void (%A*, i8*)* @A__foo to void (%A*, [81 x i8]*)*), void (%A*, [81 x i8]*)** %fooPtr, align 8 - store void (%A*, [5 x i32]*)* bitcast (void (%A*, i32*)* @A__bar to void (%A*, [5 x i32]*)*), void (%A*, [5 x i32]*)** %barPtr, align 8 - %__0 = alloca [81 x i8], align 1 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) + store void (%A*, [81 x i8]*)* bitcast (void (%A*, i8*)* @A__foo to void (%A*, [81 x i8]*)*), void (%A*, [81 x i8]*)** %fooPtr, align [filtered] + store void (%A*, [5 x i32]*)* bitcast (void (%A*, i32*)* @A__bar to void (%A*, [5 x i32]*)*), void (%A*, [5 x i32]*)** %barPtr, align [filtered] + %__0 = alloca [81 x i8], align [filtered] %1 = bitcast [81 x i8]* %__0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - %2 = load void (%A*, [81 x i8]*)*, void (%A*, [81 x i8]*)** %fooPtr, align 8 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + %2 = load void (%A*, [81 x i8]*)*, void (%A*, [81 x i8]*)** %fooPtr, align [filtered] %3 = bitcast [81 x i8]* %__0 to i8* call void %2(%A* %instanceA, i8* %3) - %load___0 = load [81 x i8], [81 x i8]* %__0, align 1 - %__1 = alloca [5 x i32], align 4 + %load___0 = load [81 x i8], [81 x i8]* %__0, align [filtered] + %__1 = alloca [5 x i32], align [filtered] %4 = bitcast [5 x i32]* %__1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %4, i8 0, i64 ptrtoint ([5 x i32]* getelementptr ([5 x i32], [5 x i32]* null, i32 1) to i64), i1 false) - %5 = load void (%A*, [5 x i32]*)*, void (%A*, [5 x i32]*)** %barPtr, align 8 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %4, i8 0, i64 ptrtoint ([5 x i32]* getelementptr ([5 x i32], [5 x i32]* null, i32 1) to i64), i1 false) + %5 = load void (%A*, [5 x i32]*)*, void (%A*, [5 x i32]*)** %barPtr, align [filtered] %6 = bitcast [5 x i32]* %__1 to i32* call void %5(%A* %instanceA, i32* %6) - %load___1 = load [5 x i32], [5 x i32]* %__1, align 4 + %load___1 = load [5 x i32], [5 x i32]* %__1, align [filtered] ret void } @@ -285,46 +285,46 @@ fn function_pointer_method_with_all_variable_parameter_types() { define void @A(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] ret void } define i32 @A__foo(%A* %0, i32 %1, [81 x i8]* %2, i32* %3) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 - %A.foo = alloca i32, align 4 - %in = alloca i32, align 4 - store i32 %1, i32* %in, align 4 - %out = alloca [81 x i8]*, align 8 - store [81 x i8]* %2, [81 x i8]** %out, align 8 - %inout = alloca i32*, align 8 - store i32* %3, i32** %inout, align 8 - store i32 0, i32* %A.foo, align 4 - %A__foo_ret = load i32, i32* %A.foo, align 4 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] + %A.foo = alloca i32, align [filtered] + %in = alloca i32, align [filtered] + store i32 %1, i32* %in, align [filtered] + %out = alloca [81 x i8]*, align [filtered] + store [81 x i8]* %2, [81 x i8]** %out, align [filtered] + %inout = alloca i32*, align [filtered] + store i32* %3, i32** %inout, align [filtered] + store i32 0, i32* %A.foo, align [filtered] + %A__foo_ret = load i32, i32* %A.foo, align [filtered] ret i32 %A__foo_ret } define void @main() { entry: - %instanceA = alloca %A, align 8 - %fooPtr = alloca i32 (%A*, i32, [81 x i8]*, [5 x i32]*)*, align 8 - %localIn = alloca i32, align 4 - %localOut = alloca [81 x i8], align 1 - %localInOut = alloca [5 x i32], align 4 + %instanceA = alloca %A, align [filtered] + %fooPtr = alloca i32 (%A*, i32, [81 x i8]*, [5 x i32]*)*, align [filtered] + %localIn = alloca i32, align [filtered] + %localOut = alloca [81 x i8], align [filtered] + %localInOut = alloca [5 x i32], align [filtered] %0 = bitcast %A* %instanceA to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) - store i32 (%A*, i32, [81 x i8]*, [5 x i32]*)* bitcast (i32 (%A*, i32, [81 x i8]*, i32*)* @A__foo to i32 (%A*, i32, [81 x i8]*, [5 x i32]*)*), i32 (%A*, i32, [81 x i8]*, [5 x i32]*)** %fooPtr, align 8 - store i32 0, i32* %localIn, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) + store i32 (%A*, i32, [81 x i8]*, [5 x i32]*)* bitcast (i32 (%A*, i32, [81 x i8]*, i32*)* @A__foo to i32 (%A*, i32, [81 x i8]*, [5 x i32]*)*), i32 (%A*, i32, [81 x i8]*, [5 x i32]*)** %fooPtr, align [filtered] + store i32 0, i32* %localIn, align [filtered] %1 = bitcast [81 x i8]* %localOut to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [5 x i32]* %localInOut to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %2, i8 0, i64 ptrtoint ([5 x i32]* getelementptr ([5 x i32], [5 x i32]* null, i32 1) to i64), i1 false) - %3 = load i32 (%A*, i32, [81 x i8]*, [5 x i32]*)*, i32 (%A*, i32, [81 x i8]*, [5 x i32]*)** %fooPtr, align 8 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %2, i8 0, i64 ptrtoint ([5 x i32]* getelementptr ([5 x i32], [5 x i32]* null, i32 1) to i64), i1 false) + %3 = load i32 (%A*, i32, [81 x i8]*, [5 x i32]*)*, i32 (%A*, i32, [81 x i8]*, [5 x i32]*)** %fooPtr, align [filtered] %4 = bitcast [81 x i8]* %localOut to i8* %5 = bitcast [5 x i32]* %localInOut to i32* - %load_localIn = load i32, i32* %localIn, align 4 + %load_localIn = load i32, i32* %localIn, align [filtered] %fnptr_call = call i32 %3(%A* %instanceA, i32 %load_localIn, i8* %4, i32* %5) ret void } @@ -389,8 +389,8 @@ fn function_block_body() { define void @A(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %local = getelementptr inbounds %A, %A* %0, i32 0, i32 0 %in = getelementptr inbounds %A, %A* %0, i32 0, i32 1 %out = getelementptr inbounds %A, %A* %0, i32 0, i32 2 @@ -400,27 +400,27 @@ fn function_block_body() { define void @main() { entry: - %instanceA = alloca %A, align 8 - %bodyPtr = alloca void (%A*)*, align 8 - %localIn = alloca i16, align 2 - %localOut = alloca i32, align 4 - %localInout = alloca i64, align 8 + %instanceA = alloca %A, align [filtered] + %bodyPtr = alloca void (%A*)*, align [filtered] + %localIn = alloca i16, align [filtered] + %localOut = alloca i32, align [filtered] + %localInout = alloca i64, align [filtered] %0 = bitcast %A* %instanceA to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) - store void (%A*)* @A, void (%A*)** %bodyPtr, align 8 - store i16 0, i16* %localIn, align 2 - store i32 0, i32* %localOut, align 4 - store i64 0, i64* %localInout, align 8 - %1 = load void (%A*)*, void (%A*)** %bodyPtr, align 8 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) + store void (%A*)* @A, void (%A*)** %bodyPtr, align [filtered] + store i16 0, i16* %localIn, align [filtered] + store i32 0, i32* %localOut, align [filtered] + store i64 0, i64* %localInout, align [filtered] + %1 = load void (%A*)*, void (%A*)** %bodyPtr, align [filtered] %2 = getelementptr inbounds %A, %A* %instanceA, i32 0, i32 1 - %load_localIn = load i16, i16* %localIn, align 2 - store i16 %load_localIn, i16* %2, align 2 + %load_localIn = load i16, i16* %localIn, align [filtered] + store i16 %load_localIn, i16* %2, align [filtered] %3 = getelementptr inbounds %A, %A* %instanceA, i32 0, i32 3 - store i64* %localInout, i64** %3, align 8 + store i64* %localInout, i64** %3, align [filtered] call void %1(%A* %instanceA) %4 = getelementptr inbounds %A, %A* %instanceA, i32 0, i32 2 - %5 = load i32, i32* %4, align 4 - store i32 %5, i32* %localOut, align 4 + %5 = load i32, i32* %4, align [filtered] + store i32 %5, i32* %localOut, align [filtered] ret void } @@ -460,16 +460,16 @@ fn regular_pointers_to_function_blocks_are_called_directly() { define void @A(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] ret void } define void @main() { entry: - %fooPtr = alloca %A*, align 8 - store %A* null, %A** %fooPtr, align 8 - %deref = load %A*, %A** %fooPtr, align 8 + %fooPtr = alloca %A*, align [filtered] + store %A* null, %A** %fooPtr, align [filtered] + %deref = load %A*, %A** %fooPtr, align [filtered] call void @A(%A* %deref) ret void } diff --git a/src/codegen/tests/initialization_test/complex_initializers.rs b/src/codegen/tests/initialization_test/complex_initializers.rs index 7920f21b063..f127e46ca62 100644 --- a/src/codegen/tests/initialization_test/complex_initializers.rs +++ b/src/codegen/tests/initialization_test/complex_initializers.rs @@ -29,7 +29,7 @@ fn simple_global() { define void @__init___Test() { entry: - store [81 x i8]* @s, [81 x i8]** @ps, align 8 + store [81 x i8]* @s, [81 x i8]** @ps, align [filtered] ret void } "#); @@ -62,7 +62,7 @@ fn global_alias() { define void @__init___Test() { entry: - store [81 x i8]* @s, [81 x i8]** @ps, align 8 + store [81 x i8]* @s, [81 x i8]** @ps, align [filtered] ret void } "#); @@ -95,7 +95,7 @@ fn global_reference_to() { define void @__init___Test() { entry: - store [81 x i8]* @s, [81 x i8]** @ps, align 8 + store [81 x i8]* @s, [81 x i8]** @ps, align [filtered] ret void } "#); @@ -141,18 +141,18 @@ fn init_functions_generated_for_programs() { define void @__init_plc_prg(%PLC_PRG* %0) { entry: - %self = alloca %PLC_PRG*, align 8 - store %PLC_PRG* %0, %PLC_PRG** %self, align 8 - %deref = load %PLC_PRG*, %PLC_PRG** %self, align 8 + %self = alloca %PLC_PRG*, align [filtered] + store %PLC_PRG* %0, %PLC_PRG** %self, align [filtered] + %deref = load %PLC_PRG*, %PLC_PRG** %self, align [filtered] %to_init = getelementptr inbounds %PLC_PRG, %PLC_PRG* %deref, i32 0, i32 0 - store [81 x i8]* @s, [81 x i8]** %to_init, align 8 + store [81 x i8]* @s, [81 x i8]** %to_init, align [filtered] ret void } define void @__user_init_PLC_PRG(%PLC_PRG* %0) { entry: - %self = alloca %PLC_PRG*, align 8 - store %PLC_PRG* %0, %PLC_PRG** %self, align 8 + %self = alloca %PLC_PRG*, align [filtered] + store %PLC_PRG* %0, %PLC_PRG** %self, align [filtered] ret void } @@ -286,8 +286,8 @@ fn init_functions_generated_for_function_blocks() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %to_init = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 ret void @@ -295,38 +295,38 @@ fn init_functions_generated_for_function_blocks() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 - %deref1 = load %foo*, %foo** %self, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] + %deref1 = load %foo*, %foo** %self, align [filtered] %to_init = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 1 - store [81 x i8]* @s, [81 x i8]** %to_init, align 8 + store [81 x i8]* @s, [81 x i8]** %to_init, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -435,8 +435,8 @@ fn nested_initializer_pous() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %str_ref = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %b = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 @@ -447,8 +447,8 @@ fn nested_initializer_pous() { define void @bar(%bar* %0) { entry: - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] %__vtable = getelementptr inbounds %bar, %bar* %0, i32 0, i32 0 %b = getelementptr inbounds %bar, %bar* %0, i32 0, i32 1 call void @baz__print(%baz* %b) @@ -457,8 +457,8 @@ fn nested_initializer_pous() { define void @baz(%baz* %0) { entry: - %this = alloca %baz*, align 8 - store %baz* %0, %baz** %this, align 8 + %this = alloca %baz*, align [filtered] + store %baz* %0, %baz** %this, align [filtered] %__vtable = getelementptr inbounds %baz, %baz* %0, i32 0, i32 0 %str_ref = getelementptr inbounds %baz, %baz* %0, i32 0, i32 1 ret void @@ -482,8 +482,8 @@ fn nested_initializer_pous() { define void @bar__print(%bar* %0) { entry: - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] %__vtable = getelementptr inbounds %bar, %bar* %0, i32 0, i32 0 %b = getelementptr inbounds %bar, %bar* %0, i32 0, i32 1 ret void @@ -491,8 +491,8 @@ fn nested_initializer_pous() { define void @foo__print(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %str_ref = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %b = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 @@ -501,8 +501,8 @@ fn nested_initializer_pous() { define void @baz__print(%baz* %0) { entry: - %this = alloca %baz*, align 8 - store %baz* %0, %baz** %this, align 8 + %this = alloca %baz*, align [filtered] + store %baz* %0, %baz** %this, align [filtered] %__vtable = getelementptr inbounds %baz, %baz* %0, i32 0, i32 0 %str_ref = getelementptr inbounds %baz, %baz* %0, i32 0, i32 1 ret void @@ -510,114 +510,114 @@ fn nested_initializer_pous() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 - %deref = load %__vtable_bar*, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] + %deref = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %__body = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref, i32 0, i32 0 - store void (%bar*)* @bar, void (%bar*)** %__body, align 8 + store void (%bar*)* @bar, void (%bar*)** %__body, align [filtered] ret void } define void @__init___vtable_baz(%__vtable_baz* %0) { entry: - %self = alloca %__vtable_baz*, align 8 - store %__vtable_baz* %0, %__vtable_baz** %self, align 8 - %deref = load %__vtable_baz*, %__vtable_baz** %self, align 8 + %self = alloca %__vtable_baz*, align [filtered] + store %__vtable_baz* %0, %__vtable_baz** %self, align [filtered] + %deref = load %__vtable_baz*, %__vtable_baz** %self, align [filtered] %__body = getelementptr inbounds %__vtable_baz, %__vtable_baz* %deref, i32 0, i32 0 - store void (%baz*)* @baz, void (%baz*)** %__body, align 8 + store void (%baz*)* @baz, void (%baz*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %b = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 2 call void @__init_bar(%bar* %b) - %deref1 = load %foo*, %foo** %self, align 8 + %deref1 = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 - %deref2 = load %foo*, %foo** %self, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] + %deref2 = load %foo*, %foo** %self, align [filtered] %str_ref = getelementptr inbounds %foo, %foo* %deref2, i32 0, i32 1 - store [81 x i8]* @str, [81 x i8]** %str_ref, align 8 + store [81 x i8]* @str, [81 x i8]** %str_ref, align [filtered] ret void } define void @__init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %b = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 1 call void @__init_baz(%baz* %b) - %deref1 = load %bar*, %bar** %self, align 8 + %deref1 = load %bar*, %bar** %self, align [filtered] %__vtable = getelementptr inbounds %bar, %bar* %deref1, i32 0, i32 0 - store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_baz(%baz* %0) { entry: - %self = alloca %baz*, align 8 - store %baz* %0, %baz** %self, align 8 - %deref = load %baz*, %baz** %self, align 8 + %self = alloca %baz*, align [filtered] + store %baz* %0, %baz** %self, align [filtered] + %deref = load %baz*, %baz** %self, align [filtered] %__vtable = getelementptr inbounds %baz, %baz* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_baz* @__vtable_baz_instance to i32*), i32** %__vtable, align 8 - %deref1 = load %baz*, %baz** %self, align 8 + store i32* bitcast (%__vtable_baz* @__vtable_baz_instance to i32*), i32** %__vtable, align [filtered] + %deref1 = load %baz*, %baz** %self, align [filtered] %str_ref = getelementptr inbounds %baz, %baz* %deref1, i32 0, i32 1 - store [81 x i8]* @str, [81 x i8]** %str_ref, align 8 + store [81 x i8]* @str, [81 x i8]** %str_ref, align [filtered] ret void } define void @__init_mainprog(%mainProg* %0) { entry: - %self = alloca %mainProg*, align 8 - store %mainProg* %0, %mainProg** %self, align 8 - %deref = load %mainProg*, %mainProg** %self, align 8 + %self = alloca %mainProg*, align [filtered] + store %mainProg* %0, %mainProg** %self, align [filtered] + %deref = load %mainProg*, %mainProg** %self, align [filtered] %f = getelementptr inbounds %mainProg, %mainProg* %deref, i32 0, i32 1 call void @__init_foo(%foo* %f) - %deref1 = load %mainProg*, %mainProg** %self, align 8 + %deref1 = load %mainProg*, %mainProg** %self, align [filtered] %other_ref_to_global = getelementptr inbounds %mainProg, %mainProg* %deref1, i32 0, i32 0 - store [81 x i8]* @str, [81 x i8]** %other_ref_to_global, align 8 + store [81 x i8]* @str, [81 x i8]** %other_ref_to_global, align [filtered] ret void } define void @__init_sideprog(%sideProg* %0) { entry: - %self = alloca %sideProg*, align 8 - store %sideProg* %0, %sideProg** %self, align 8 - %deref = load %sideProg*, %sideProg** %self, align 8 + %self = alloca %sideProg*, align [filtered] + store %sideProg* %0, %sideProg** %self, align [filtered] + %deref = load %sideProg*, %sideProg** %self, align [filtered] %f = getelementptr inbounds %sideProg, %sideProg* %deref, i32 0, i32 1 call void @__init_foo(%foo* %f) - %deref1 = load %sideProg*, %sideProg** %self, align 8 + %deref1 = load %sideProg*, %sideProg** %self, align [filtered] %other_ref_to_global = getelementptr inbounds %sideProg, %sideProg* %deref1, i32 0, i32 0 - store [81 x i8]* @str, [81 x i8]** %other_ref_to_global, align 8 + store [81 x i8]* @str, [81 x i8]** %other_ref_to_global, align [filtered] ret void } define void @__user_init___vtable_baz(%__vtable_baz* %0) { entry: - %self = alloca %__vtable_baz*, align 8 - store %__vtable_baz* %0, %__vtable_baz** %self, align 8 + %self = alloca %__vtable_baz*, align [filtered] + store %__vtable_baz* %0, %__vtable_baz** %self, align [filtered] ret void } define void @__user_init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %b = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 1 call void @__user_init_baz(%baz* %b) ret void @@ -625,23 +625,23 @@ fn nested_initializer_pous() { define void @__user_init_baz(%baz* %0) { entry: - %self = alloca %baz*, align 8 - store %baz* %0, %baz** %self, align 8 + %self = alloca %baz*, align [filtered] + store %baz* %0, %baz** %self, align [filtered] ret void } define void @__user_init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] ret void } define void @__user_init_sideProg(%sideProg* %0) { entry: - %self = alloca %sideProg*, align 8 - store %sideProg* %0, %sideProg** %self, align 8 - %deref = load %sideProg*, %sideProg** %self, align 8 + %self = alloca %sideProg*, align [filtered] + store %sideProg* %0, %sideProg** %self, align [filtered] + %deref = load %sideProg*, %sideProg** %self, align [filtered] %f = getelementptr inbounds %sideProg, %sideProg* %deref, i32 0, i32 1 call void @__user_init_foo(%foo* %f) ret void @@ -649,9 +649,9 @@ fn nested_initializer_pous() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %b = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 2 call void @__user_init_bar(%bar* %b) ret void @@ -659,9 +659,9 @@ fn nested_initializer_pous() { define void @__user_init_mainProg(%mainProg* %0) { entry: - %self = alloca %mainProg*, align 8 - store %mainProg* %0, %mainProg** %self, align 8 - %deref = load %mainProg*, %mainProg** %self, align 8 + %self = alloca %mainProg*, align [filtered] + store %mainProg* %0, %mainProg** %self, align [filtered] + %deref = load %mainProg*, %mainProg** %self, align [filtered] %f = getelementptr inbounds %mainProg, %mainProg* %deref, i32 0, i32 1 call void @__user_init_foo(%foo* %f) ret void @@ -669,8 +669,8 @@ fn nested_initializer_pous() { define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } @@ -724,8 +724,8 @@ fn local_address() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %i = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %pi = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 @@ -734,40 +734,40 @@ fn local_address() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 - %deref1 = load %foo*, %foo** %self, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] + %deref1 = load %foo*, %foo** %self, align [filtered] %pi = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 2 - %deref2 = load %foo*, %foo** %self, align 8 + %deref2 = load %foo*, %foo** %self, align [filtered] %i = getelementptr inbounds %foo, %foo* %deref2, i32 0, i32 1 - store i16* %i, i16** %pi, align 8 + store i16* %i, i16** %pi, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -823,8 +823,8 @@ fn user_init_called_for_variables_on_stack() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %i = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %pi = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 @@ -833,20 +833,20 @@ fn user_init_called_for_variables_on_stack() { define void @foo__FB_INIT(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %i = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %pi = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 - store i16* %i, i16** %pi, align 8 + store i16* %i, i16** %pi, align [filtered] ret void } define void @main() { entry: - %fb = alloca %foo, align 8 + %fb = alloca %foo, align [filtered] %0 = bitcast %foo* %fb to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) call void @__init_foo(%foo* %fb) call void @__user_init_foo(%foo* %fb) call void @foo(%foo* %fb) @@ -858,39 +858,39 @@ fn user_init_called_for_variables_on_stack() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %FB_INIT = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__FB_INIT, void (%foo*)** %FB_INIT, align 8 + store void (%foo*)* @foo__FB_INIT, void (%foo*)** %FB_INIT, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] call void @foo__FB_INIT(%foo* %deref) ret void } @@ -1032,22 +1032,22 @@ fn struct_types() { define void @__init_mystruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 - %deref = load %myStruct*, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] + %deref = load %myStruct*, %myStruct** %self, align [filtered] %member = getelementptr inbounds %myStruct, %myStruct* %deref, i32 0, i32 0 - store [81 x i8]* @s, [81 x i8]** %member, align 8 - %deref1 = load %myStruct*, %myStruct** %self, align 8 + store [81 x i8]* @s, [81 x i8]** %member, align [filtered] + %deref1 = load %myStruct*, %myStruct** %self, align [filtered] %member2 = getelementptr inbounds %myStruct, %myStruct* %deref1, i32 0, i32 1 - store [2 x [81 x i8]]* @s2, [2 x [81 x i8]]** %member2, align 8 + store [2 x [81 x i8]]* @s2, [2 x [81 x i8]]** %member2, align [filtered] ret void } define void @__init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 - %deref = load %prog*, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] + %deref = load %prog*, %prog** %self, align [filtered] %str = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 call void @__init_mystruct(%myStruct* %str) ret void @@ -1055,16 +1055,16 @@ fn struct_types() { define void @__user_init_myStruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__user_init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 - %deref = load %prog*, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] + %deref = load %prog*, %prog** %self, align [filtered] %str = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 call void @__user_init_myStruct(%myStruct* %str) ret void @@ -1138,16 +1138,16 @@ fn stateful_pous_methods_and_structs_get_init_functions() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } define void @foo__m(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } @@ -1171,101 +1171,101 @@ fn stateful_pous_methods_and_structs_get_init_functions() { define void @foo__act(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %m = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__m, void (%foo*)** %m, align 8 + store void (%foo*)* @foo__m, void (%foo*)** %m, align [filtered] ret void } define void @__init___vtable_cl(%__vtable_cl* %0) { entry: - %self = alloca %__vtable_cl*, align 8 - store %__vtable_cl* %0, %__vtable_cl** %self, align 8 - %deref = load %__vtable_cl*, %__vtable_cl** %self, align 8 + %self = alloca %__vtable_cl*, align [filtered] + store %__vtable_cl* %0, %__vtable_cl** %self, align [filtered] + %deref = load %__vtable_cl*, %__vtable_cl** %self, align [filtered] %m = getelementptr inbounds %__vtable_cl, %__vtable_cl* %deref, i32 0, i32 0 - store void (%cl*)* @cl__m, void (%cl*)** %m, align 8 + store void (%cl*)* @cl__m, void (%cl*)** %m, align [filtered] ret void } define void @__init_mystruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] ret void } define void @__init_cl(%cl* %0) { entry: - %self = alloca %cl*, align 8 - store %cl* %0, %cl** %self, align 8 - %deref = load %cl*, %cl** %self, align 8 + %self = alloca %cl*, align [filtered] + store %cl* %0, %cl** %self, align [filtered] + %deref = load %cl*, %cl** %self, align [filtered] %__vtable = getelementptr inbounds %cl, %cl* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_cl* @__vtable_cl_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_cl* @__vtable_cl_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] ret void } define void @__user_init___vtable_cl(%__vtable_cl* %0) { entry: - %self = alloca %__vtable_cl*, align 8 - store %__vtable_cl* %0, %__vtable_cl** %self, align 8 + %self = alloca %__vtable_cl*, align [filtered] + store %__vtable_cl* %0, %__vtable_cl** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_myStruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -1327,8 +1327,8 @@ fn global_instance() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 ret void @@ -1342,52 +1342,52 @@ fn global_instance() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 - %deref1 = load %foo*, %foo** %self, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] + %deref1 = load %foo*, %foo** %self, align [filtered] %s = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 1 - store [81 x i8]* @ps, [81 x i8]** %s, align 8 + store [81 x i8]* @ps, [81 x i8]** %s, align [filtered] ret void } define void @__init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] ret void } define void @__user_init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -1454,8 +1454,8 @@ fn aliased_types() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 ret void @@ -1470,32 +1470,32 @@ fn aliased_types() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 - %deref1 = load %foo*, %foo** %self, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] + %deref1 = load %foo*, %foo** %self, align [filtered] %s = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 1 - store [81 x i8]* @ps, [81 x i8]** %s, align 8 + store [81 x i8]* @ps, [81 x i8]** %s, align [filtered] ret void } define void @__init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 - %deref = load %prog*, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] + %deref = load %prog*, %prog** %self, align [filtered] %fb = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 call void @__init_foo(%foo* %fb) ret void @@ -1503,9 +1503,9 @@ fn aliased_types() { define void @__user_init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 - %deref = load %prog*, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] + %deref = load %prog*, %prog** %self, align [filtered] %fb = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 call void @__user_init_foo(%foo* %fb) ret void @@ -1513,15 +1513,15 @@ fn aliased_types() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } @@ -1653,8 +1653,8 @@ fn var_config_aliased_variables_initialized() { define void @FB(%FB* %0) { entry: - %this = alloca %FB*, align 8 - store %FB* %0, %FB** %this, align 8 + %this = alloca %FB*, align [filtered] + store %FB* %0, %FB** %this, align [filtered] %__vtable = getelementptr inbounds %FB, %FB* %0, i32 0, i32 0 %foo = getelementptr inbounds %FB, %FB* %0, i32 0, i32 1 ret void @@ -1669,32 +1669,32 @@ fn var_config_aliased_variables_initialized() { define void @__init___vtable_fb(%__vtable_FB* %0) { entry: - %self = alloca %__vtable_FB*, align 8 - store %__vtable_FB* %0, %__vtable_FB** %self, align 8 - %deref = load %__vtable_FB*, %__vtable_FB** %self, align 8 + %self = alloca %__vtable_FB*, align [filtered] + store %__vtable_FB* %0, %__vtable_FB** %self, align [filtered] + %deref = load %__vtable_FB*, %__vtable_FB** %self, align [filtered] %__body = getelementptr inbounds %__vtable_FB, %__vtable_FB* %deref, i32 0, i32 0 - store void (%FB*)* @FB, void (%FB*)** %__body, align 8 + store void (%FB*)* @FB, void (%FB*)** %__body, align [filtered] ret void } define void @__init_fb(%FB* %0) { entry: - %self = alloca %FB*, align 8 - store %FB* %0, %FB** %self, align 8 - %deref = load %FB*, %FB** %self, align 8 + %self = alloca %FB*, align [filtered] + store %FB* %0, %FB** %self, align [filtered] + %deref = load %FB*, %FB** %self, align [filtered] %__vtable = getelementptr inbounds %FB, %FB* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_FB* @__vtable_FB_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_FB* @__vtable_FB_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 - %deref = load %prog*, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] + %deref = load %prog*, %prog** %self, align [filtered] %instance1 = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 call void @__init_fb(%FB* %instance1) - %deref1 = load %prog*, %prog** %self, align 8 + %deref1 = load %prog*, %prog** %self, align [filtered] %instance2 = getelementptr inbounds %prog, %prog* %deref1, i32 0, i32 1 call void @__init_fb(%FB* %instance2) ret void @@ -1702,26 +1702,26 @@ fn var_config_aliased_variables_initialized() { define void @__user_init_FB(%FB* %0) { entry: - %self = alloca %FB*, align 8 - store %FB* %0, %FB** %self, align 8 + %self = alloca %FB*, align [filtered] + store %FB* %0, %FB** %self, align [filtered] ret void } define void @__user_init___vtable_FB(%__vtable_FB* %0) { entry: - %self = alloca %__vtable_FB*, align 8 - store %__vtable_FB* %0, %__vtable_FB** %self, align 8 + %self = alloca %__vtable_FB*, align [filtered] + store %__vtable_FB* %0, %__vtable_FB** %self, align [filtered] ret void } define void @__user_init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 - %deref = load %prog*, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] + %deref = load %prog*, %prog** %self, align [filtered] %instance1 = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 call void @__user_init_FB(%FB* %instance1) - %deref1 = load %prog*, %prog** %self, align 8 + %deref1 = load %prog*, %prog** %self, align [filtered] %instance2 = getelementptr inbounds %prog, %prog* %deref1, i32 0, i32 1 call void @__user_init_FB(%FB* %instance2) ret void @@ -1739,8 +1739,8 @@ fn var_config_aliased_variables_initialized() { define void @__init___var_config() { entry: - store i32* @__PI_1_2_1, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0, i32 1), align 8 - store i32* @__PI_1_2_2, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1, i32 1), align 8 + store i32* @__PI_1_2_1, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0, i32 1), align [filtered] + store i32* @__PI_1_2_2, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1, i32 1), align [filtered] ret void } "#); @@ -1790,8 +1790,8 @@ fn var_external_blocks_are_ignored_in_init_functions() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } @@ -1803,42 +1803,42 @@ fn var_external_blocks_are_ignored_in_init_functions() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__init___Test() { entry: call void @__init___vtable_foo(%__vtable_foo* @__vtable_foo_instance) - store [81 x i8]* @s, [81 x i8]** @refString, align 8 + store [81 x i8]* @s, [81 x i8]** @refString, align [filtered] call void @__user_init___vtable_foo(%__vtable_foo* @__vtable_foo_instance) ret void } @@ -1879,8 +1879,8 @@ fn ref_to_local_member() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %ptr = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 @@ -1891,50 +1891,50 @@ fn ref_to_local_member() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 - %deref1 = load %foo*, %foo** %self, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] + %deref1 = load %foo*, %foo** %self, align [filtered] %ptr = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 2 - %deref2 = load %foo*, %foo** %self, align 8 + %deref2 = load %foo*, %foo** %self, align [filtered] %s = getelementptr inbounds %foo, %foo* %deref2, i32 0, i32 1 - store [81 x i8]* %s, [81 x i8]** %ptr, align 8 - %deref3 = load %foo*, %foo** %self, align 8 + store [81 x i8]* %s, [81 x i8]** %ptr, align [filtered] + %deref3 = load %foo*, %foo** %self, align [filtered] %alias = getelementptr inbounds %foo, %foo* %deref3, i32 0, i32 3 - %deref4 = load %foo*, %foo** %self, align 8 + %deref4 = load %foo*, %foo** %self, align [filtered] %s5 = getelementptr inbounds %foo, %foo* %deref4, i32 0, i32 1 - store [81 x i8]* %s5, [81 x i8]** %alias, align 8 - %deref6 = load %foo*, %foo** %self, align 8 + store [81 x i8]* %s5, [81 x i8]** %alias, align [filtered] + %deref6 = load %foo*, %foo** %self, align [filtered] %reference_to = getelementptr inbounds %foo, %foo* %deref6, i32 0, i32 4 - %deref7 = load %foo*, %foo** %self, align 8 + %deref7 = load %foo*, %foo** %self, align [filtered] %s8 = getelementptr inbounds %foo, %foo* %deref7, i32 0, i32 1 - store [81 x i8]* %s8, [81 x i8]** %reference_to, align 8 + store [81 x i8]* %s8, [81 x i8]** %reference_to, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -1986,8 +1986,8 @@ fn ref_to_local_member_shadows_global() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %ptr = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 @@ -1998,50 +1998,50 @@ fn ref_to_local_member_shadows_global() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 - %deref1 = load %foo*, %foo** %self, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] + %deref1 = load %foo*, %foo** %self, align [filtered] %ptr = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 2 - %deref2 = load %foo*, %foo** %self, align 8 + %deref2 = load %foo*, %foo** %self, align [filtered] %s = getelementptr inbounds %foo, %foo* %deref2, i32 0, i32 1 - store [81 x i8]* %s, [81 x i8]** %ptr, align 8 - %deref3 = load %foo*, %foo** %self, align 8 + store [81 x i8]* %s, [81 x i8]** %ptr, align [filtered] + %deref3 = load %foo*, %foo** %self, align [filtered] %alias = getelementptr inbounds %foo, %foo* %deref3, i32 0, i32 3 - %deref4 = load %foo*, %foo** %self, align 8 + %deref4 = load %foo*, %foo** %self, align [filtered] %s5 = getelementptr inbounds %foo, %foo* %deref4, i32 0, i32 1 - store [81 x i8]* %s5, [81 x i8]** %alias, align 8 - %deref6 = load %foo*, %foo** %self, align 8 + store [81 x i8]* %s5, [81 x i8]** %alias, align [filtered] + %deref6 = load %foo*, %foo** %self, align [filtered] %reference_to = getelementptr inbounds %foo, %foo* %deref6, i32 0, i32 4 - %deref7 = load %foo*, %foo** %self, align 8 + %deref7 = load %foo*, %foo** %self, align [filtered] %s8 = getelementptr inbounds %foo, %foo* %deref7, i32 0, i32 1 - store [81 x i8]* %s8, [81 x i8]** %reference_to, align 8 + store [81 x i8]* %s8, [81 x i8]** %reference_to, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -2090,53 +2090,53 @@ fn temporary_variable_ref_to_local_member() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 - %ptr = alloca [81 x i8]*, align 8 - %alias = alloca [81 x i8]*, align 8 - %reference_to = alloca [81 x i8]*, align 8 - store [81 x i8]* %s, [81 x i8]** %ptr, align 8 - store [81 x i8]* null, [81 x i8]** %alias, align 8 - store [81 x i8]* null, [81 x i8]** %reference_to, align 8 - store [81 x i8]* %s, [81 x i8]** %ptr, align 8 - store [81 x i8]* %s, [81 x i8]** %alias, align 8 - store [81 x i8]* %s, [81 x i8]** %reference_to, align 8 + %ptr = alloca [81 x i8]*, align [filtered] + %alias = alloca [81 x i8]*, align [filtered] + %reference_to = alloca [81 x i8]*, align [filtered] + store [81 x i8]* %s, [81 x i8]** %ptr, align [filtered] + store [81 x i8]* null, [81 x i8]** %alias, align [filtered] + store [81 x i8]* null, [81 x i8]** %reference_to, align [filtered] + store [81 x i8]* %s, [81 x i8]** %ptr, align [filtered] + store [81 x i8]* %s, [81 x i8]** %alias, align [filtered] + store [81 x i8]* %s, [81 x i8]** %reference_to, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -2179,19 +2179,19 @@ fn temporary_variable_ref_to_temporary_variable() { define void @foo() { entry: - %ptr = alloca [81 x i8]*, align 8 - %alias = alloca [81 x i8]*, align 8 - %s = alloca [81 x i8], align 1 - %reference_to = alloca [81 x i8]*, align 8 - store [81 x i8]* %s, [81 x i8]** %ptr, align 8 - store [81 x i8]* null, [81 x i8]** %alias, align 8 + %ptr = alloca [81 x i8]*, align [filtered] + %alias = alloca [81 x i8]*, align [filtered] + %s = alloca [81 x i8], align [filtered] + %reference_to = alloca [81 x i8]*, align [filtered] + store [81 x i8]* %s, [81 x i8]** %ptr, align [filtered] + store [81 x i8]* null, [81 x i8]** %alias, align [filtered] %0 = bitcast [81 x i8]* %s to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - store [81 x i8]* null, [81 x i8]** %reference_to, align 8 - store [81 x i8]* %s, [81 x i8]** %ptr, align 8 - store [81 x i8]* %s, [81 x i8]** %alias, align 8 - %deref = load [81 x i8]*, [81 x i8]** %alias, align 8 - store [81 x i8]* %deref, [81 x i8]** %reference_to, align 8 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + store [81 x i8]* null, [81 x i8]** %reference_to, align [filtered] + store [81 x i8]* %s, [81 x i8]** %ptr, align [filtered] + store [81 x i8]* %s, [81 x i8]** %alias, align [filtered] + %deref = load [81 x i8]*, [81 x i8]** %alias, align [filtered] + store [81 x i8]* %deref, [81 x i8]** %reference_to, align [filtered] ret void } @@ -2241,59 +2241,59 @@ fn initializing_method_variables_with_refs() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } define void @foo__bar(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %x = alloca i32, align 4 - %px = alloca i32*, align 8 - store i32 10, i32* %x, align 4 - store i32* %x, i32** %px, align 8 - store i32* %x, i32** %px, align 8 + %x = alloca i32, align [filtered] + %px = alloca i32*, align [filtered] + store i32 10, i32* %x, align [filtered] + store i32* %x, i32** %px, align [filtered] + store i32* %x, i32** %px, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %bar = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__bar, void (%foo*)** %bar, align 8 + store void (%foo*)* @foo__bar, void (%foo*)** %bar, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -2343,8 +2343,8 @@ fn initializing_method_variables_with_refs_referencing_parent_pou_variable() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 ret void @@ -2352,50 +2352,50 @@ fn initializing_method_variables_with_refs_referencing_parent_pou_variable() { define void @foo__bar(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 - %px = alloca i32*, align 8 - store i32* %x, i32** %px, align 8 - store i32* %x, i32** %px, align 8 + %px = alloca i32*, align [filtered] + store i32* %x, i32** %px, align [filtered] + store i32* %x, i32** %px, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %bar = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__bar, void (%foo*)** %bar, align 8 + store void (%foo*)* @foo__bar, void (%foo*)** %bar, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -2446,57 +2446,57 @@ fn initializing_method_variables_with_refs_referencing_global_variable() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } define void @foo__bar(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %px = alloca i32*, align 8 - store i32* @x, i32** %px, align 8 - store i32* @x, i32** %px, align 8 + %px = alloca i32*, align [filtered] + store i32* @x, i32** %px, align [filtered] + store i32* @x, i32** %px, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %bar = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__bar, void (%foo*)** %bar, align 8 + store void (%foo*)* @foo__bar, void (%foo*)** %bar, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -2548,59 +2548,59 @@ fn initializing_method_variables_with_refs_shadowing() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } define void @foo__bar(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %x = alloca i32, align 4 - %px = alloca i32*, align 8 - store i32 0, i32* %x, align 4 - store i32* %x, i32** %px, align 8 - store i32* %x, i32** %px, align 8 + %x = alloca i32, align [filtered] + %px = alloca i32*, align [filtered] + store i32 0, i32* %x, align [filtered] + store i32* %x, i32** %px, align [filtered] + store i32* %x, i32** %px, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %bar = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__bar, void (%foo*)** %bar, align 8 + store void (%foo*)* @foo__bar, void (%foo*)** %bar, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -2647,59 +2647,59 @@ fn initializing_method_variables_with_alias() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } define void @foo__bar(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %x = alloca i32, align 4 - %px = alloca i32*, align 8 - store i32 0, i32* %x, align 4 - store i32* null, i32** %px, align 8 - store i32* %x, i32** %px, align 8 + %x = alloca i32, align [filtered] + %px = alloca i32*, align [filtered] + store i32 0, i32* %x, align [filtered] + store i32* null, i32** %px, align [filtered] + store i32* %x, i32** %px, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %bar = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__bar, void (%foo*)** %bar, align 8 + store void (%foo*)* @foo__bar, void (%foo*)** %bar, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -2746,59 +2746,59 @@ fn initializing_method_variables_with_reference_to() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } define void @foo__bar(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %x = alloca i32, align 4 - %px = alloca i32*, align 8 - store i32 0, i32* %x, align 4 - store i32* null, i32** %px, align 8 - store i32* %x, i32** %px, align 8 + %x = alloca i32, align [filtered] + %px = alloca i32*, align [filtered] + store i32 0, i32* %x, align [filtered] + store i32* null, i32** %px, align [filtered] + store i32* %x, i32** %px, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %bar = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__bar, void (%foo*)** %bar, align 8 + store void (%foo*)* @foo__bar, void (%foo*)** %bar, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -2857,8 +2857,8 @@ fn methods_call_init_functions_for_their_members() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %y = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 @@ -2867,20 +2867,20 @@ fn methods_call_init_functions_for_their_members() { define void @bar(%bar* %0) { entry: - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] %__vtable = getelementptr inbounds %bar, %bar* %0, i32 0, i32 0 ret void } define void @bar__baz(%bar* %0) { entry: - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] %__vtable = getelementptr inbounds %bar, %bar* %0, i32 0, i32 0 - %fb = alloca %foo, align 8 + %fb = alloca %foo, align [filtered] %1 = bitcast %foo* %fb to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) call void @__init_foo(%foo* %fb) call void @__user_init_foo(%foo* %fb) ret void @@ -2891,77 +2891,77 @@ fn methods_call_init_functions_for_their_members() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 - %deref = load %__vtable_bar*, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] + %deref = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %__body = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref, i32 0, i32 0 - store void (%bar*)* @bar, void (%bar*)** %__body, align 8 - %deref1 = load %__vtable_bar*, %__vtable_bar** %self, align 8 + store void (%bar*)* @bar, void (%bar*)** %__body, align [filtered] + %deref1 = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %baz = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref1, i32 0, i32 1 - store void (%bar*)* @bar__baz, void (%bar*)** %baz, align 8 + store void (%bar*)* @bar__baz, void (%bar*)** %baz, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 - %deref1 = load %foo*, %foo** %self, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] + %deref1 = load %foo*, %foo** %self, align [filtered] %y = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 2 - %deref2 = load %foo*, %foo** %self, align 8 + %deref2 = load %foo*, %foo** %self, align [filtered] %x = getelementptr inbounds %foo, %foo* %deref2, i32 0, i32 1 - store i32* %x, i32** %y, align 8 + store i32* %x, i32** %y, align [filtered] ret void } define void @__init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %__vtable = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] ret void } define void @__user_init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -3024,8 +3024,8 @@ fn user_fb_init_is_added_and_called_if_it_exists() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %y = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 @@ -3034,13 +3034,13 @@ fn user_fb_init_is_added_and_called_if_it_exists() { define void @foo__FB_INIT(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %y = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 - store i16 1, i16* %x, align 2 - store i16 2, i16* %y, align 2 + store i16 1, i16* %x, align [filtered] + store i16 2, i16* %y, align [filtered] ret void } @@ -3053,32 +3053,32 @@ fn user_fb_init_is_added_and_called_if_it_exists() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %FB_INIT = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__FB_INIT, void (%foo*)** %FB_INIT, align 8 + store void (%foo*)* @foo__FB_INIT, void (%foo*)** %FB_INIT, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 - %deref = load %prog*, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] + %deref = load %prog*, %prog** %self, align [filtered] %f = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 call void @__init_foo(%foo* %f) ret void @@ -3086,9 +3086,9 @@ fn user_fb_init_is_added_and_called_if_it_exists() { define void @__user_init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 - %deref = load %prog*, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] + %deref = load %prog*, %prog** %self, align [filtered] %f = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 call void @__user_init_foo(%foo* %f) ret void @@ -3096,17 +3096,17 @@ fn user_fb_init_is_added_and_called_if_it_exists() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] call void @foo__FB_INIT(%foo* %deref) ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } @@ -3180,8 +3180,8 @@ fn user_fb_init_in_global_struct() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %y = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 @@ -3190,13 +3190,13 @@ fn user_fb_init_in_global_struct() { define void @foo__FB_INIT(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %y = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 - store i16 1, i16* %x, align 2 - store i16 2, i16* %y, align 2 + store i16 1, i16* %x, align [filtered] + store i16 2, i16* %y, align [filtered] ret void } @@ -3210,22 +3210,22 @@ fn user_fb_init_in_global_struct() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %FB_INIT = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__FB_INIT, void (%foo*)** %FB_INIT, align 8 + store void (%foo*)* @foo__FB_INIT, void (%foo*)** %FB_INIT, align [filtered] ret void } define void @__init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %f = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__init_foo(%foo* %f) ret void @@ -3233,19 +3233,19 @@ fn user_fb_init_in_global_struct() { define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 - %deref = load %prog*, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] + %deref = load %prog*, %prog** %self, align [filtered] %str = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 call void @__init_bar(%bar* %str) ret void @@ -3253,18 +3253,18 @@ fn user_fb_init_in_global_struct() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] call void @foo__FB_INIT(%foo* %deref) ret void } define void @__user_init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %f = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__user_init_foo(%foo* %f) ret void @@ -3272,16 +3272,16 @@ fn user_fb_init_in_global_struct() { define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 - %deref = load %prog*, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] + %deref = load %prog*, %prog** %self, align [filtered] %str = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 call void @__user_init_bar(%bar* %str) ret void @@ -3356,29 +3356,29 @@ fn user_init_called_when_declared_as_external() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %FB_INIT = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__FB_INIT, void (%foo*)** %FB_INIT, align 8 + store void (%foo*)* @foo__FB_INIT, void (%foo*)** %FB_INIT, align [filtered] ret void } define void @__init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] ret void } define void @__user_init_prog(%prog* %0) { entry: - %self = alloca %prog*, align 8 - store %prog* %0, %prog** %self, align 8 - %deref = load %prog*, %prog** %self, align 8 + %self = alloca %prog*, align [filtered] + store %prog* %0, %prog** %self, align [filtered] + %deref = load %prog*, %prog** %self, align [filtered] %f = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 call void @__user_init_foo(%foo* %f) ret void @@ -3386,17 +3386,17 @@ fn user_init_called_when_declared_as_external() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] call void @foo__FB_INIT(%foo* %deref) ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__global_constant_without_initializer_gets_declared_initializer.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__global_constant_without_initializer_gets_declared_initializer.snap index c04e311a11a..d22f28e6397 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__global_constant_without_initializer_gets_declared_initializer.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__global_constant_without_initializer_gets_declared_initializer.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/global_initializers.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,19 +13,19 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %cmd1 = alloca %commands, align 8 - %var1 = alloca i16, align 2 - %cmd2 = alloca %commands, align 8 - %var2 = alloca i16, align 2 + %main = alloca i32, align [filtered] + %cmd1 = alloca %commands, align [filtered] + %var1 = alloca i16, align [filtered] + %cmd2 = alloca %commands, align [filtered] + %var2 = alloca i16, align [filtered] %0 = bitcast %commands* %cmd1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%commands, %commands* @__commands__init, i32 0, i32 0), i64 ptrtoint (%commands* getelementptr (%commands, %commands* null, i32 1) to i64), i1 false) - store i16 0, i16* %var1, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds (%commands, %commands* @__commands__init, i32 0, i32 0), i64 ptrtoint (%commands* getelementptr (%commands, %commands* null, i32 1) to i64), i1 false) + store i16 0, i16* %var1, align [filtered] %1 = bitcast %commands* %cmd2 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 getelementptr inbounds (%commands, %commands* @__commands__init, i32 0, i32 0), i64 ptrtoint (%commands* getelementptr (%commands, %commands* null, i32 1) to i64), i1 false) - store i16 0, i16* %var2, align 2 - store i32 0, i32* %main, align 4 - %main_ret = load i32, i32* %main, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds (%commands, %commands* @__commands__init, i32 0, i32 0), i64 ptrtoint (%commands* getelementptr (%commands, %commands* null, i32 1) to i64), i1 false) + store i16 0, i16* %var2, align [filtered] + store i32 0, i32* %main, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__global_constant_without_initializer_gets_default_initializer.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__global_constant_without_initializer_gets_default_initializer.snap index ce8d92f5d28..2283e309ec1 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__global_constant_without_initializer_gets_default_initializer.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__global_constant_without_initializer_gets_default_initializer.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/global_initializers.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,24 +14,24 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %cmd1 = alloca %commands, align 8 - %myStr1 = alloca [81 x i8], align 1 - %myArr1 = alloca [4 x i16], align 2 - %cmd2 = alloca %commands, align 8 - %myArr2 = alloca [4 x i16], align 2 + %main = alloca i32, align [filtered] + %cmd1 = alloca %commands, align [filtered] + %myStr1 = alloca [81 x i8], align [filtered] + %myArr1 = alloca [4 x i16], align [filtered] + %cmd2 = alloca %commands, align [filtered] + %myArr2 = alloca [4 x i16], align [filtered] %0 = bitcast %commands* %cmd1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%commands, %commands* @__commands__init, i32 0, i32 0), i64 ptrtoint (%commands* getelementptr (%commands, %commands* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds (%commands, %commands* @__commands__init, i32 0, i32 0), i64 ptrtoint (%commands* getelementptr (%commands, %commands* null, i32 1) to i64), i1 false) %1 = bitcast [81 x i8]* %myStr1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 getelementptr inbounds ([81 x i8], [81 x i8]* @__main.myStr1__init, i32 0, i32 0), i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([81 x i8], [81 x i8]* @__main.myStr1__init, i32 0, i32 0), i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [4 x i16]* %myArr1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %2, i8 0, i64 ptrtoint ([4 x i16]* getelementptr ([4 x i16], [4 x i16]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %2, i8 0, i64 ptrtoint ([4 x i16]* getelementptr ([4 x i16], [4 x i16]* null, i32 1) to i64), i1 false) %3 = bitcast %commands* %cmd2 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %3, i8* align 1 getelementptr inbounds (%commands, %commands* @__commands__init, i32 0, i32 0), i64 ptrtoint (%commands* getelementptr (%commands, %commands* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %3, i8* align [filtered] getelementptr inbounds (%commands, %commands* @__commands__init, i32 0, i32 0), i64 ptrtoint (%commands* getelementptr (%commands, %commands* null, i32 1) to i64), i1 false) %4 = bitcast [4 x i16]* %myArr2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %4, i8 0, i64 ptrtoint ([4 x i16]* getelementptr ([4 x i16], [4 x i16]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 - %main_ret = load i32, i32* %main, align 4 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %4, i8 0, i64 ptrtoint ([4 x i16]* getelementptr ([4 x i16], [4 x i16]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__initial_values_in_global_variables_out_of_order.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__initial_values_in_global_variables_out_of_order.snap index 1acd99e16c7..a832978c6ea 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__initial_values_in_global_variables_out_of_order.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__global_initializers__initial_values_in_global_variables_out_of_order.snap @@ -16,8 +16,8 @@ target triple = "[filtered]" define void @MyFB(%MyFB* %0) { entry: - %this = alloca %MyFB*, align 8 - store %MyFB* %0, %MyFB** %this, align 8 + %this = alloca %MyFB*, align [filtered] + store %MyFB* %0, %MyFB** %this, align [filtered] %x = getelementptr inbounds %MyFB, %MyFB* %0, i32 0, i32 0 ret void } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__class_struct_initialized_in_function.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__class_struct_initialized_in_function.snap index d26abd951ed..bd05e9dfcd5 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__class_struct_initialized_in_function.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__class_struct_initialized_in_function.snap @@ -21,16 +21,16 @@ entry: define i32 @func(%fb* %0) { entry: - %func = alloca i32, align 4 - %in = alloca %fb, align 8 + %func = alloca i32, align [filtered] + %in = alloca %fb, align [filtered] %1 = bitcast %fb* %in to i8* %2 = bitcast %fb* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%fb* getelementptr (%fb, %fb* null, i32 1) to i64), i1 false) - %x = alloca %fb, align 8 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%fb* getelementptr (%fb, %fb* null, i32 1) to i64), i1 false) + %x = alloca %fb, align [filtered] %3 = bitcast %fb* %x to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %3, i8* align 1 bitcast (%fb* @__fb__init to i8*), i64 ptrtoint (%fb* getelementptr (%fb, %fb* null, i32 1) to i64), i1 false) - store i32 0, i32* %func, align 4 - %func_ret = load i32, i32* %func, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %3, i8* align [filtered] bitcast (%fb* @__fb__init to i8*), i64 ptrtoint (%fb* getelementptr (%fb, %fb* null, i32 1) to i64), i1 false) + store i32 0, i32* %func, align [filtered] + %func_ret = load i32, i32* %func, align [filtered] ret i32 %func_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__default_values_for_not_initialized_function_vars.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__default_values_for_not_initialized_function_vars.snap index 82110984c8a..e75618c79f4 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__default_values_for_not_initialized_function_vars.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__default_values_for_not_initialized_function_vars.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/pou_initializers.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,18 +9,18 @@ target triple = "[filtered]" define i16 @func() { entry: - %func = alloca i16, align 2 - %int_var = alloca i16, align 2 - %arr_var = alloca [4 x i32], align 4 - %ptr_var = alloca i32*, align 8 - %float_var = alloca float, align 4 - store i16 0, i16* %int_var, align 2 + %func = alloca i16, align [filtered] + %int_var = alloca i16, align [filtered] + %arr_var = alloca [4 x i32], align [filtered] + %ptr_var = alloca i32*, align [filtered] + %float_var = alloca float, align [filtered] + store i16 0, i16* %int_var, align [filtered] %0 = bitcast [4 x i32]* %arr_var to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) - store i32* null, i32** %ptr_var, align 8 - store float 0.000000e+00, float* %float_var, align 4 - store i16 0, i16* %func, align 2 - %func_ret = load i16, i16* %func, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) + store i32* null, i32** %ptr_var, align [filtered] + store float 0.000000e+00, float* %float_var, align [filtered] + store i16 0, i16* %func, align [filtered] + %func_ret = load i16, i16* %func, align [filtered] ret i16 %func_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__enum_variants_have_precedence_over_global_variables_in_inline_assignment.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__enum_variants_have_precedence_over_global_variables_in_inline_assignment.snap index 3295e130530..4678279a0bc 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__enum_variants_have_precedence_over_global_variables_in_inline_assignment.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__enum_variants_have_precedence_over_global_variables_in_inline_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/pou_initializers.rs expression: function -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,20 +15,20 @@ target triple = "[filtered]" define i32 @foo() { entry: - %foo = alloca i32, align 4 - %position = alloca i32, align 4 - store i32 1, i32* %position, align 4 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %position = alloca i32, align [filtered] + store i32 1, i32* %position, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } define i32 @bar() { entry: - %bar = alloca i32, align 4 - %position = alloca i32, align 4 - store i32 3, i32* %position, align 4 - store i32 0, i32* %bar, align 4 - %bar_ret = load i32, i32* %bar, align 4 + %bar = alloca i32, align [filtered] + %position = alloca i32, align [filtered] + store i32 3, i32* %position, align [filtered] + store i32 0, i32* %bar, align [filtered] + %bar_ret = load i32, i32* %bar, align [filtered] ret i32 %bar_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_block_struct_initialized_in_function.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_block_struct_initialized_in_function.snap index 800ab0b5993..219647efb44 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_block_struct_initialized_in_function.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_block_struct_initialized_in_function.snap @@ -15,23 +15,23 @@ target triple = "[filtered]" define void @fb(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] ret void } define i32 @func(%fb* %0) { entry: - %func = alloca i32, align 4 - %in = alloca %fb, align 8 + %func = alloca i32, align [filtered] + %in = alloca %fb, align [filtered] %1 = bitcast %fb* %in to i8* %2 = bitcast %fb* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%fb* getelementptr (%fb, %fb* null, i32 1) to i64), i1 false) - %x = alloca %fb, align 8 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%fb* getelementptr (%fb, %fb* null, i32 1) to i64), i1 false) + %x = alloca %fb, align [filtered] %3 = bitcast %fb* %x to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %3, i8* align 1 bitcast (%fb* @__fb__init to i8*), i64 ptrtoint (%fb* getelementptr (%fb, %fb* null, i32 1) to i64), i1 false) - store i32 0, i32* %func, align 4 - %func_ret = load i32, i32* %func, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %3, i8* align [filtered] bitcast (%fb* @__fb__init to i8*), i64 ptrtoint (%fb* getelementptr (%fb, %fb* null, i32 1) to i64), i1 false) + store i32 0, i32* %func, align [filtered] + %func_ret = load i32, i32* %func, align [filtered] ret i32 %func_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_is_initialized.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_is_initialized.snap index 8c76c815776..e8302e86906 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_is_initialized.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_is_initialized.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/pou_initializers.rs expression: function -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,29 +13,29 @@ target triple = "[filtered]" define i16 @foo_int() { entry: - %foo_int = alloca i16, align 2 - store i16 0, i16* %foo_int, align 2 - %foo_int_ret = load i16, i16* %foo_int, align 2 + %foo_int = alloca i16, align [filtered] + store i16 0, i16* %foo_int, align [filtered] + %foo_int_ret = load i16, i16* %foo_int, align [filtered] ret i16 %foo_int_ret } define void @foo_str(i8* %0) { entry: - %foo_str = alloca i8*, align 8 - store i8* %0, i8** %foo_str, align 8 + %foo_str = alloca i8*, align [filtered] + store i8* %0, i8** %foo_str, align [filtered] ret void } define void @foo_arr(float* %0) { entry: - %foo_arr = alloca float*, align 8 - store float* %0, float** %foo_arr, align 8 + %foo_arr = alloca float*, align [filtered] + store float* %0, float** %foo_arr, align [filtered] ret void } define void @foo_struct(%MyStruct* %0) { entry: - %foo_struct = alloca %MyStruct*, align 8 - store %MyStruct* %0, %MyStruct** %foo_struct, align 8 + %foo_struct = alloca %MyStruct*, align [filtered] + store %MyStruct* %0, %MyStruct** %foo_struct, align [filtered] ret void } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_is_initialized_with_type_initializer.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_is_initialized_with_type_initializer.snap index 5db2a0fb45a..4587da99516 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_is_initialized_with_type_initializer.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_is_initialized_with_type_initializer.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/pou_initializers.rs expression: function -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,11 +14,11 @@ target triple = "[filtered]" define void @target(i32* %0) { entry: - %target = alloca i32*, align 8 - store i32* %0, i32** %target, align 8 - %deref = load i32*, i32** %target, align 8 + %target = alloca i32*, align [filtered] + store i32* %0, i32** %target, align [filtered] + %deref = load i32*, i32** %target, align [filtered] %tmpVar = getelementptr inbounds i32, i32* %deref, i32 2 - store i32 7, i32* %tmpVar, align 4 + store i32 7, i32* %tmpVar, align [filtered] ret void } @@ -27,17 +26,17 @@ define void @main(%main* %0) { entry: %x = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %y = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - %__target0 = alloca [4 x i32], align 4 + %__target0 = alloca [4 x i32], align [filtered] %1 = bitcast [4 x i32]* %__target0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 bitcast ([4 x i32]* @__myArray__init to i8*), i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] bitcast ([4 x i32]* @__myArray__init to i8*), i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) %2 = bitcast [4 x i32]* %__target0 to i32* call void @target(i32* %2) %3 = bitcast [4 x i32]* %x to i8* %4 = bitcast [4 x i32]* %__target0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %3, i8* align 1 %4, i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %3, i8* align [filtered] %4, i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) %5 = bitcast [4 x i32]* %y to i8* %6 = bitcast [4 x i32]* %x to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %5, i8* align 1 %6, i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %5, i8* align [filtered] %6, i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) ret void } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_with_initializers_is_initialized.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_with_initializers_is_initialized.snap index 20e141eb873..7efc004da67 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_with_initializers_is_initialized.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_with_initializers_is_initialized.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/pou_initializers.rs expression: function -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,29 +15,29 @@ target triple = "[filtered]" define i16 @foo_int() { entry: - %foo_int = alloca i16, align 2 - store i16 7, i16* %foo_int, align 2 - %foo_int_ret = load i16, i16* %foo_int, align 2 + %foo_int = alloca i16, align [filtered] + store i16 7, i16* %foo_int, align [filtered] + %foo_int_ret = load i16, i16* %foo_int, align [filtered] ret i16 %foo_int_ret } define void @foo_str(i8* %0) { entry: - %foo_str = alloca i8*, align 8 - store i8* %0, i8** %foo_str, align 8 + %foo_str = alloca i8*, align [filtered] + store i8* %0, i8** %foo_str, align [filtered] ret void } define void @foo_arr(float* %0) { entry: - %foo_arr = alloca float*, align 8 - store float* %0, float** %foo_arr, align 8 + %foo_arr = alloca float*, align [filtered] + store float* %0, float** %foo_arr, align [filtered] ret void } define void @foo_strct(%MyStrct* %0) { entry: - %foo_strct = alloca %MyStrct*, align 8 - store %MyStrct* %0, %MyStrct** %foo_strct, align 8 + %foo_strct = alloca %MyStrct*, align [filtered] + store %MyStrct* %0, %MyStrct** %foo_strct, align [filtered] ret void } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_without_initializers_is_initialized.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_without_initializers_is_initialized.snap index 40e78b4b550..4244d13dfdc 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_without_initializers_is_initialized.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__function_return_value_without_initializers_is_initialized.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/pou_initializers.rs expression: function -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,29 +13,29 @@ target triple = "[filtered]" define i16 @foo_int() { entry: - %foo_int = alloca i16, align 2 - store i16 0, i16* %foo_int, align 2 - %foo_int_ret = load i16, i16* %foo_int, align 2 + %foo_int = alloca i16, align [filtered] + store i16 0, i16* %foo_int, align [filtered] + %foo_int_ret = load i16, i16* %foo_int, align [filtered] ret i16 %foo_int_ret } define void @foo_str(i8* %0) { entry: - %foo_str = alloca i8*, align 8 - store i8* %0, i8** %foo_str, align 8 + %foo_str = alloca i8*, align [filtered] + store i8* %0, i8** %foo_str, align [filtered] ret void } define void @foo_arr(float* %0) { entry: - %foo_arr = alloca float*, align 8 - store float* %0, float** %foo_arr, align 8 + %foo_arr = alloca float*, align [filtered] + store float* %0, float** %foo_arr, align [filtered] ret void } define void @foo_strct(%MyStrct* %0) { entry: - %foo_strct = alloca %MyStrct*, align 8 - store %MyStrct* %0, %MyStrct** %foo_strct, align 8 + %foo_strct = alloca %MyStrct*, align [filtered] + store %MyStrct* %0, %MyStrct** %foo_strct, align [filtered] ret void } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initial_values_in_function_block_pou.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initial_values_in_function_block_pou.snap index c78e541faea..4dd8eb428a4 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initial_values_in_function_block_pou.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initial_values_in_function_block_pou.snap @@ -15,8 +15,8 @@ target triple = "[filtered]" define void @FB(%FB* %0) { entry: - %this = alloca %FB*, align 8 - store %FB* %0, %FB** %this, align 8 + %this = alloca %FB*, align [filtered] + store %FB* %0, %FB** %this, align [filtered] %x = getelementptr inbounds %FB, %FB* %0, i32 0, i32 0 %xx = getelementptr inbounds %FB, %FB* %0, i32 0, i32 1 %y = getelementptr inbounds %FB, %FB* %0, i32 0, i32 2 diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initialized_array_in_function.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initialized_array_in_function.snap index 594fa0ff463..d1f46f65b60 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initialized_array_in_function.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initialized_array_in_function.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/pou_initializers.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -12,12 +11,12 @@ target triple = "[filtered]" define i16 @func() { entry: - %func = alloca i16, align 2 - %arr_var = alloca [4 x i32], align 4 + %func = alloca i16, align [filtered] + %arr_var = alloca [4 x i32], align [filtered] %0 = bitcast [4 x i32]* %arr_var to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast ([4 x i32]* @__func.arr_var__init to i8*), i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) - store i16 0, i16* %func, align 2 - %func_ret = load i16, i16* %func, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast ([4 x i32]* @__func.arr_var__init to i8*), i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) + store i16 0, i16* %func, align [filtered] + %func_ret = load i16, i16* %func, align [filtered] ret i16 %func_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initialized_array_type_in_function.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initialized_array_type_in_function.snap index 306a8877cae..ed609baa06d 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initialized_array_type_in_function.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__initialized_array_type_in_function.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/pou_initializers.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -12,12 +11,12 @@ target triple = "[filtered]" define i16 @func() { entry: - %func = alloca i16, align 2 - %arr_var = alloca [4 x i32], align 4 + %func = alloca i16, align [filtered] + %arr_var = alloca [4 x i32], align [filtered] %0 = bitcast [4 x i32]* %arr_var to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast ([4 x i32]* @__arr__init to i8*), i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) - store i16 0, i16* %func, align 2 - %func_ret = load i16, i16* %func, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast ([4 x i32]* @__arr__init to i8*), i64 ptrtoint ([4 x i32]* getelementptr ([4 x i32], [4 x i32]* null, i32 1) to i64), i1 false) + store i16 0, i16* %func, align [filtered] + %func_ret = load i16, i16* %func, align [filtered] ret i16 %func_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__memcpy_for_struct_initialization_in_function.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__memcpy_for_struct_initialization_in_function.snap index 9c578cb06d5..d64cbad28f3 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__memcpy_for_struct_initialization_in_function.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__memcpy_for_struct_initialization_in_function.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/pou_initializers.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,12 +13,12 @@ target triple = "[filtered]" define i16 @func() { entry: - %func = alloca i16, align 2 - %a = alloca %__func_a, align 8 + %func = alloca i16, align [filtered] + %a = alloca %__func_a, align [filtered] %0 = bitcast %__func_a* %a to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%__func_a* @____func_a__init to i8*), i64 ptrtoint (%__func_a* getelementptr (%__func_a, %__func_a* null, i32 1) to i64), i1 false) - store i16 0, i16* %func, align 2 - %func_ret = load i16, i16* %func, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%__func_a* @____func_a__init to i8*), i64 ptrtoint (%__func_a* getelementptr (%__func_a, %__func_a* null, i32 1) to i64), i1 false) + store i16 0, i16* %func, align [filtered] + %func_ret = load i16, i16* %func, align [filtered] ret i16 %func_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__two_identical_enums_in_different_functions_are_referenced_correctly.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__two_identical_enums_in_different_functions_are_referenced_correctly.snap index 9fc1942d953..483bd48eb1d 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__two_identical_enums_in_different_functions_are_referenced_correctly.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__two_identical_enums_in_different_functions_are_referenced_correctly.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/pou_initializers.rs expression: function -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,20 +14,20 @@ target triple = "[filtered]" define i32 @foo() { entry: - %foo = alloca i32, align 4 - %position = alloca i32, align 4 - store i32 1, i32* %position, align 4 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %position = alloca i32, align [filtered] + store i32 1, i32* %position, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } define i32 @bar() { entry: - %bar = alloca i32, align 4 - %position = alloca i32, align 4 - store i32 3, i32* %position, align 4 - store i32 0, i32* %bar, align 4 - %bar_ret = load i32, i32* %bar, align 4 + %bar = alloca i32, align [filtered] + %position = alloca i32, align [filtered] + store i32 3, i32* %position, align [filtered] + store i32 0, i32* %bar, align [filtered] + %bar_ret = load i32, i32* %bar, align [filtered] ret i32 %bar_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__two_identical_enums_in_different_functions_with_similar_names_are_referenced_correctly.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__two_identical_enums_in_different_functions_with_similar_names_are_referenced_correctly.snap index 2f41a64a136..d3b99a8d128 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__two_identical_enums_in_different_functions_with_similar_names_are_referenced_correctly.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__pou_initializers__two_identical_enums_in_different_functions_with_similar_names_are_referenced_correctly.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/pou_initializers.rs expression: function -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -19,40 +18,40 @@ target triple = "[filtered]" define i32 @a() { entry: - %a = alloca i32, align 4 - %position = alloca i32, align 4 - store i32 1, i32* %position, align 4 - store i32 0, i32* %a, align 4 - %a_ret = load i32, i32* %a, align 4 + %a = alloca i32, align [filtered] + %position = alloca i32, align [filtered] + store i32 1, i32* %position, align [filtered] + store i32 0, i32* %a, align [filtered] + %a_ret = load i32, i32* %a, align [filtered] ret i32 %a_ret } define i32 @aa() { entry: - %aa = alloca i32, align 4 - %position = alloca i32, align 4 - store i32 2, i32* %position, align 4 - store i32 0, i32* %aa, align 4 - %aa_ret = load i32, i32* %aa, align 4 + %aa = alloca i32, align [filtered] + %position = alloca i32, align [filtered] + store i32 2, i32* %position, align [filtered] + store i32 0, i32* %aa, align [filtered] + %aa_ret = load i32, i32* %aa, align [filtered] ret i32 %aa_ret } define i32 @bb() { entry: - %bb = alloca i32, align 4 - %position = alloca i32, align 4 - store i32 3, i32* %position, align 4 - store i32 0, i32* %bb, align 4 - %bb_ret = load i32, i32* %bb, align 4 + %bb = alloca i32, align [filtered] + %position = alloca i32, align [filtered] + store i32 3, i32* %position, align [filtered] + store i32 0, i32* %bb, align [filtered] + %bb_ret = load i32, i32* %bb, align [filtered] ret i32 %bb_ret } define i32 @b() { entry: - %b = alloca i32, align 4 - %position = alloca i32, align 4 - store i32 4, i32* %position, align 4 - store i32 0, i32* %b, align 4 - %b_ret = load i32, i32* %b, align 4 + %b = alloca i32, align [filtered] + %position = alloca i32, align [filtered] + store i32 4, i32* %position, align [filtered] + store i32 0, i32* %b, align [filtered] + %b_ret = load i32, i32* %b, align [filtered] ret i32 %b_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__type_initializers__enums_with_inline_initializer_are_initialized.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__type_initializers__enums_with_inline_initializer_are_initialized.snap index dc3bc47dfde..06e52b35846 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__type_initializers__enums_with_inline_initializer_are_initialized.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__type_initializers__enums_with_inline_initializer_are_initialized.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/initialization_test/type_initializers.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -26,16 +25,16 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %y = alloca i32, align 4 - %var1 = alloca i32, align 4 - %var2 = alloca i32, align 4 - %var3 = alloca i32, align 4 - store i32 2, i32* %y, align 4 - store i32 1, i32* %var1, align 4 - store i32 2, i32* %var2, align 4 - store i32 1, i32* %var3, align 4 - store i32 0, i32* %main, align 4 - %main_ret = load i32, i32* %main, align 4 + %main = alloca i32, align [filtered] + %y = alloca i32, align [filtered] + %var1 = alloca i32, align [filtered] + %var2 = alloca i32, align [filtered] + %var3 = alloca i32, align [filtered] + store i32 2, i32* %y, align [filtered] + store i32 1, i32* %var1, align [filtered] + store i32 2, i32* %var2, align [filtered] + store i32 1, i32* %var3, align [filtered] + store i32 0, i32* %main, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__type_initializers__initial_values_in_fb_variable.snap b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__type_initializers__initial_values_in_fb_variable.snap index c809b92bf77..0b8a9464cec 100644 --- a/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__type_initializers__initial_values_in_fb_variable.snap +++ b/src/codegen/tests/initialization_test/snapshots/rusty__codegen__tests__initialization_test__type_initializers__initial_values_in_fb_variable.snap @@ -17,8 +17,8 @@ target triple = "[filtered]" define void @TON(%TON* %0) { entry: - %this = alloca %TON*, align 8 - store %TON* %0, %TON** %this, align 8 + %this = alloca %TON*, align [filtered] + store %TON* %0, %TON** %this, align [filtered] %a = getelementptr inbounds %TON, %TON* %0, i32 0, i32 0 %b = getelementptr inbounds %TON, %TON* %0, i32 0, i32 1 ret void diff --git a/src/codegen/tests/online_change_tests.rs b/src/codegen/tests/online_change_tests.rs index 9c2ee6064c3..a807c8ccdb3 100644 --- a/src/codegen/tests/online_change_tests.rs +++ b/src/codegen/tests/online_change_tests.rs @@ -24,11 +24,11 @@ fn generate_function_with_online_change() { define i32 @foo() section "$RUSTY$fn-foo:i32[]" { entry: - %foo = alloca i32, align 4 - %x = alloca i32, align 4 - store i32 0, i32* %x, align 4 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %x = alloca i32, align [filtered] + store i32 0, i32* %x, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } "#) @@ -96,9 +96,9 @@ fn generate_program_and_var_with_online_change() { define void @prg(%prg* %0) section "$RUSTY$fn-prg:v[]" { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - %1 = load i32*, i32** getelementptr inbounds (i32*, i32** inttoptr (i64 -2401053092612145152 to i32**), i32 1), align 8 - %load_x = load i32, i32* %x, align 4 - store i32 %load_x, i32* %1, align 4 + %1 = load i32*, i32** getelementptr inbounds (i32*, i32** inttoptr (i64 -2401053092612145152 to i32**), i32 1), align [filtered] + %load_x = load i32, i32* %x, align [filtered] + store i32 %load_x, i32* %1, align [filtered] ret void } "#) @@ -131,14 +131,14 @@ fn generate_function_and_var_with_online_change() { define i32 @foo() section "$RUSTY$fn-foo:i32[]" { entry: - %foo = alloca i32, align 4 - %x = alloca i32, align 4 - store i32 0, i32* %x, align 4 - store i32 0, i32* %foo, align 4 - %0 = load i32*, i32** getelementptr inbounds (i32*, i32** inttoptr (i64 -2401053092612145152 to i32**), i32 1), align 8 - %load_x = load i32, i32* %x, align 4 - store i32 %load_x, i32* %0, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %x = alloca i32, align [filtered] + store i32 0, i32* %x, align [filtered] + store i32 0, i32* %foo, align [filtered] + %0 = load i32*, i32** getelementptr inbounds (i32*, i32** inttoptr (i64 -2401053092612145152 to i32**), i32 1), align [filtered] + %load_x = load i32, i32* %x, align [filtered] + store i32 %load_x, i32* %0, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } "#) diff --git a/src/codegen/tests/oop_tests.rs b/src/codegen/tests/oop_tests.rs index 832abfa1ae6..bae0d3fc93b 100644 --- a/src/codegen/tests/oop_tests.rs +++ b/src/codegen/tests/oop_tests.rs @@ -40,8 +40,8 @@ fn members_from_base_class_are_available_in_subclasses() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %a = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %b = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 @@ -51,68 +51,68 @@ fn members_from_base_class_are_available_in_subclasses() { define void @bar(%bar* %0) { entry: - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %0, i32 0, i32 0 ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 - %deref = load %__vtable_bar*, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] + %deref = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %__body = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref, i32 0, i32 0 - store void (%bar*)* @bar, void (%bar*)** %__body, align 8 + store void (%bar*)* @bar, void (%bar*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__init_foo(%foo* %__foo) - %deref1 = load %bar*, %bar** %self, align 8 + %deref1 = load %bar*, %bar** %self, align [filtered] %__foo2 = getelementptr inbounds %bar, %bar* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %foo, %foo* %__foo2, i32 0, i32 0 - store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] ret void } define void @__user_init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__user_init_foo(%foo* %__foo) ret void @@ -120,15 +120,15 @@ fn members_from_base_class_are_available_in_subclasses() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } @@ -192,8 +192,8 @@ fn write_to_parent_variable_qualified_access() { define void @fb(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 %x = getelementptr inbounds %fb, %fb* %0, i32 0, i32 1 %y = getelementptr inbounds %fb, %fb* %0, i32 0, i32 2 @@ -202,103 +202,103 @@ fn write_to_parent_variable_qualified_access() { define void @fb2(%fb2* %0) { entry: - %this = alloca %fb2*, align 8 - store %fb2* %0, %fb2** %this, align 8 + %this = alloca %fb2*, align [filtered] + store %fb2* %0, %fb2** %this, align [filtered] %__fb = getelementptr inbounds %fb2, %fb2* %0, i32 0, i32 0 ret void } define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %myFb = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %__fb = getelementptr inbounds %fb2, %fb2* %myFb, i32 0, i32 0 %x = getelementptr inbounds %fb, %fb* %__fb, i32 0, i32 1 - store i16 1, i16* %x, align 2 + store i16 1, i16* %x, align [filtered] ret void } define void @__init___vtable_fb(%__vtable_fb* %0) { entry: - %self = alloca %__vtable_fb*, align 8 - store %__vtable_fb* %0, %__vtable_fb** %self, align 8 - %deref = load %__vtable_fb*, %__vtable_fb** %self, align 8 + %self = alloca %__vtable_fb*, align [filtered] + store %__vtable_fb* %0, %__vtable_fb** %self, align [filtered] + %deref = load %__vtable_fb*, %__vtable_fb** %self, align [filtered] %__body = getelementptr inbounds %__vtable_fb, %__vtable_fb* %deref, i32 0, i32 0 - store void (%fb*)* @fb, void (%fb*)** %__body, align 8 + store void (%fb*)* @fb, void (%fb*)** %__body, align [filtered] ret void } define void @__init___vtable_fb2(%__vtable_fb2* %0) { entry: - %self = alloca %__vtable_fb2*, align 8 - store %__vtable_fb2* %0, %__vtable_fb2** %self, align 8 - %deref = load %__vtable_fb2*, %__vtable_fb2** %self, align 8 + %self = alloca %__vtable_fb2*, align [filtered] + store %__vtable_fb2* %0, %__vtable_fb2** %self, align [filtered] + %deref = load %__vtable_fb2*, %__vtable_fb2** %self, align [filtered] %__body = getelementptr inbounds %__vtable_fb2, %__vtable_fb2* %deref, i32 0, i32 0 - store void (%fb2*)* @fb2, void (%fb2*)** %__body, align 8 + store void (%fb2*)* @fb2, void (%fb2*)** %__body, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init_fb2(%fb2* %0) { entry: - %self = alloca %fb2*, align 8 - store %fb2* %0, %fb2** %self, align 8 - %deref = load %fb2*, %fb2** %self, align 8 + %self = alloca %fb2*, align [filtered] + store %fb2* %0, %fb2** %self, align [filtered] + %deref = load %fb2*, %fb2** %self, align [filtered] %__fb = getelementptr inbounds %fb2, %fb2* %deref, i32 0, i32 0 call void @__init_fb(%fb* %__fb) - %deref1 = load %fb2*, %fb2** %self, align 8 + %deref1 = load %fb2*, %fb2** %self, align [filtered] %__fb2 = getelementptr inbounds %fb2, %fb2* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %fb, %fb* %__fb2, i32 0, i32 0 - store i32* bitcast (%__vtable_fb2* @__vtable_fb2_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_fb2* @__vtable_fb2_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_fb(%fb* %0) { entry: - %self = alloca %fb*, align 8 - store %fb* %0, %fb** %self, align 8 - %deref = load %fb*, %fb** %self, align 8 + %self = alloca %fb*, align [filtered] + store %fb* %0, %fb** %self, align [filtered] + %deref = load %fb*, %fb** %self, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_fb* @__vtable_fb_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_fb* @__vtable_fb_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %myFb = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 1 call void @__init_fb2(%fb2* %myFb) - %deref1 = load %foo*, %foo** %self, align 8 + %deref1 = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_fb(%fb* %0) { entry: - %self = alloca %fb*, align 8 - store %fb* %0, %fb** %self, align 8 + %self = alloca %fb*, align [filtered] + store %fb* %0, %fb** %self, align [filtered] ret void } define void @__user_init_fb2(%fb2* %0) { entry: - %self = alloca %fb2*, align 8 - store %fb2* %0, %fb2** %self, align 8 - %deref = load %fb2*, %fb2** %self, align 8 + %self = alloca %fb2*, align [filtered] + store %fb2* %0, %fb2** %self, align [filtered] + %deref = load %fb2*, %fb2** %self, align [filtered] %__fb = getelementptr inbounds %fb2, %fb2* %deref, i32 0, i32 0 call void @__user_init_fb(%fb* %__fb) ret void @@ -306,30 +306,30 @@ fn write_to_parent_variable_qualified_access() { define void @__user_init___vtable_fb(%__vtable_fb* %0) { entry: - %self = alloca %__vtable_fb*, align 8 - store %__vtable_fb* %0, %__vtable_fb** %self, align 8 + %self = alloca %__vtable_fb*, align [filtered] + store %__vtable_fb* %0, %__vtable_fb** %self, align [filtered] ret void } define void @__user_init___vtable_fb2(%__vtable_fb2* %0) { entry: - %self = alloca %__vtable_fb2*, align 8 - store %__vtable_fb2* %0, %__vtable_fb2** %self, align 8 + %self = alloca %__vtable_fb2*, align [filtered] + store %__vtable_fb2* %0, %__vtable_fb2** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %myFb = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 1 call void @__user_init_fb2(%fb2* %myFb) ret void @@ -398,8 +398,8 @@ fn write_to_parent_variable_in_instance() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 ret void @@ -407,34 +407,34 @@ fn write_to_parent_variable_in_instance() { define void @foo__baz(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %1 = bitcast [81 x i8]* %s to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) ret void } define void @bar(%bar* %0) { entry: - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %__foo, i32 0, i32 1 %1 = bitcast [81 x i8]* %s to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) ret void } define void @main() { entry: - %s = alloca [81 x i8], align 1 - %fb = alloca %bar, align 8 + %s = alloca [81 x i8], align [filtered] + %fb = alloca %bar, align [filtered] %0 = bitcast [81 x i8]* %s to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %1 = bitcast %bar* %fb to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 bitcast (%bar* @__bar__init to i8*), i64 ptrtoint (%bar* getelementptr (%bar, %bar* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] bitcast (%bar* @__bar__init to i8*), i64 ptrtoint (%bar* getelementptr (%bar, %bar* null, i32 1) to i64), i1 false) call void @__init_bar(%bar* %fb) call void @__user_init_bar(%bar* %fb) %__foo = getelementptr inbounds %bar, %bar* %fb, i32 0, i32 0 @@ -454,66 +454,66 @@ fn write_to_parent_variable_in_instance() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %baz = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__baz, void (%foo*)** %baz, align 8 + store void (%foo*)* @foo__baz, void (%foo*)** %baz, align [filtered] ret void } define void @__init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 - %deref = load %__vtable_bar*, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] + %deref = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %__body = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref, i32 0, i32 0 - store void (%bar*)* @bar, void (%bar*)** %__body, align 8 - %deref1 = load %__vtable_bar*, %__vtable_bar** %self, align 8 + store void (%bar*)* @bar, void (%bar*)** %__body, align [filtered] + %deref1 = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %baz = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__baz, void (%foo*)** %baz, align 8 + store void (%foo*)* @foo__baz, void (%foo*)** %baz, align [filtered] ret void } define void @__init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__init_foo(%foo* %__foo) - %deref1 = load %bar*, %bar** %self, align 8 + %deref1 = load %bar*, %bar** %self, align [filtered] %__foo2 = getelementptr inbounds %bar, %bar* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %foo, %foo* %__foo2, i32 0, i32 0 - store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] ret void } define void @__user_init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__user_init_foo(%foo* %__foo) ret void @@ -521,15 +521,15 @@ fn write_to_parent_variable_in_instance() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } @@ -609,8 +609,8 @@ fn array_in_parent_generated() { define void @grandparent(%grandparent* %0) { entry: - %this = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %this, align 8 + %this = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %this, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 0 %y = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 1 %a = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 2 @@ -619,8 +619,8 @@ fn array_in_parent_generated() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %x = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %b = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 @@ -629,8 +629,8 @@ fn array_in_parent_generated() { define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %z = getelementptr inbounds %child, %child* %0, i32 0, i32 1 ret void @@ -638,33 +638,33 @@ fn array_in_parent_generated() { define void @main() { entry: - %arr = alloca [11 x %child], align 8 + %arr = alloca [11 x %child], align [filtered] %0 = bitcast [11 x %child]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([11 x %child]* getelementptr ([11 x %child], [11 x %child]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([11 x %child]* getelementptr ([11 x %child], [11 x %child]* null, i32 1) to i64), i1 false) %tmpVar = getelementptr inbounds [11 x %child], [11 x %child]* %arr, i32 0, i32 0 %__parent = getelementptr inbounds %child, %child* %tmpVar, i32 0, i32 0 %__grandparent = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 0 %a = getelementptr inbounds %grandparent, %grandparent* %__grandparent, i32 0, i32 2 - store i16 10, i16* %a, align 2 + store i16 10, i16* %a, align [filtered] %tmpVar1 = getelementptr inbounds [11 x %child], [11 x %child]* %arr, i32 0, i32 0 %__parent2 = getelementptr inbounds %child, %child* %tmpVar1, i32 0, i32 0 %__grandparent3 = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 %y = getelementptr inbounds %grandparent, %grandparent* %__grandparent3, i32 0, i32 1 %tmpVar4 = getelementptr inbounds [6 x i16], [6 x i16]* %y, i32 0, i32 0 - store i16 20, i16* %tmpVar4, align 2 + store i16 20, i16* %tmpVar4, align [filtered] %tmpVar5 = getelementptr inbounds [11 x %child], [11 x %child]* %arr, i32 0, i32 1 %__parent6 = getelementptr inbounds %child, %child* %tmpVar5, i32 0, i32 0 %b = getelementptr inbounds %parent, %parent* %__parent6, i32 0, i32 2 - store i16 30, i16* %b, align 2 + store i16 30, i16* %b, align [filtered] %tmpVar7 = getelementptr inbounds [11 x %child], [11 x %child]* %arr, i32 0, i32 1 %__parent8 = getelementptr inbounds %child, %child* %tmpVar7, i32 0, i32 0 %x = getelementptr inbounds %parent, %parent* %__parent8, i32 0, i32 1 %tmpVar9 = getelementptr inbounds [11 x i16], [11 x i16]* %x, i32 0, i32 1 - store i16 40, i16* %tmpVar9, align 2 + store i16 40, i16* %tmpVar9, align [filtered] %tmpVar10 = getelementptr inbounds [11 x %child], [11 x %child]* %arr, i32 0, i32 2 %z = getelementptr inbounds %child, %child* %tmpVar10, i32 0, i32 1 %tmpVar11 = getelementptr inbounds [11 x i16], [11 x i16]* %z, i32 0, i32 2 - store i16 50, i16* %tmpVar11, align 2 + store i16 50, i16* %tmpVar11, align [filtered] ret void } @@ -673,106 +673,106 @@ fn array_in_parent_generated() { define void @__init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 - %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] + %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_grandparent, %__vtable_grandparent* %deref, i32 0, i32 0 - store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align 8 + store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__grandparent = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__init_grandparent(%grandparent* %__grandparent) - %deref1 = load %parent*, %parent** %self, align 8 + %deref1 = load %parent*, %parent** %self, align [filtered] %__grandparent2 = getelementptr inbounds %parent, %parent* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent2, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 - %deref = load %grandparent*, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] + %deref = load %grandparent*, %grandparent** %self, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } define void @__user_init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -780,9 +780,9 @@ fn array_in_parent_generated() { define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__user_init_grandparent(%grandparent* %__grandparent) ret void @@ -856,8 +856,8 @@ fn complex_array_access_generated() { define void @grandparent(%grandparent* %0) { entry: - %this = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %this, align 8 + %this = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %this, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 0 %y = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 1 %a = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 2 @@ -866,8 +866,8 @@ fn complex_array_access_generated() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %x = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %b = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 @@ -876,139 +876,139 @@ fn complex_array_access_generated() { define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %z = getelementptr inbounds %child, %child* %0, i32 0, i32 1 %__grandparent = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 0 %y = getelementptr inbounds %grandparent, %grandparent* %__grandparent, i32 0, i32 1 %b = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 - %load_b = load i16, i16* %b, align 2 + %load_b = load i16, i16* %b, align [filtered] %1 = sext i16 %load_b to i32 %b1 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 - %load_b2 = load i16, i16* %b1, align 2 + %load_b2 = load i16, i16* %b1, align [filtered] %2 = sext i16 %load_b2 to i32 %tmpVar = mul i32 %2, 2 %tmpVar3 = mul i32 1, %tmpVar %tmpVar4 = add i32 %tmpVar3, 0 %tmpVar5 = getelementptr inbounds [11 x i16], [11 x i16]* %z, i32 0, i32 %tmpVar4 - %load_tmpVar = load i16, i16* %tmpVar5, align 2 + %load_tmpVar = load i16, i16* %tmpVar5, align [filtered] %3 = sext i16 %load_tmpVar to i32 %tmpVar6 = add i32 %1, %3 %__grandparent7 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 0 %a = getelementptr inbounds %grandparent, %grandparent* %__grandparent7, i32 0, i32 2 - %load_a = load i16, i16* %a, align 2 + %load_a = load i16, i16* %a, align [filtered] %4 = sext i16 %load_a to i32 %tmpVar8 = sub i32 %tmpVar6, %4 %tmpVar9 = mul i32 1, %tmpVar8 %tmpVar10 = add i32 %tmpVar9, 0 %tmpVar11 = getelementptr inbounds [6 x i16], [6 x i16]* %y, i32 0, i32 %tmpVar10 - store i16 20, i16* %tmpVar11, align 2 + store i16 20, i16* %tmpVar11, align [filtered] ret void } define void @__init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 - %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] + %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_grandparent, %__vtable_grandparent* %deref, i32 0, i32 0 - store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align 8 + store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__init_grandparent(%grandparent* %__grandparent) - %deref1 = load %parent*, %parent** %self, align 8 + %deref1 = load %parent*, %parent** %self, align [filtered] %__grandparent2 = getelementptr inbounds %parent, %parent* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent2, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 - %deref = load %grandparent*, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] + %deref = load %grandparent*, %grandparent** %self, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__grandparent = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } define void @__user_init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -1016,9 +1016,9 @@ fn complex_array_access_generated() { define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__user_init_grandparent(%grandparent* %__grandparent) ret void @@ -1118,67 +1118,67 @@ fn this_in_method_call_chain() { define void @FB_Test(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 ret void } define void @FB_Test__Step(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 - %deref = load %FB_Test*, %FB_Test** %this, align 8 + %deref = load %FB_Test*, %FB_Test** %this, align [filtered] call void @FB_Test__Increment(%FB_Test* %deref) ret void } define void @FB_Test__Increment(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 ret void } define void @__init___vtable_fb_test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 - %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] + %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %__body = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref, i32 0, i32 0 - store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align 8 - %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align [filtered] + %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %Step = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref1, i32 0, i32 1 - store void (%FB_Test*)* @FB_Test__Step, void (%FB_Test*)** %Step, align 8 - %deref2 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + store void (%FB_Test*)* @FB_Test__Step, void (%FB_Test*)** %Step, align [filtered] + %deref2 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %Increment = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref2, i32 0, i32 2 - store void (%FB_Test*)* @FB_Test__Increment, void (%FB_Test*)** %Increment, align 8 + store void (%FB_Test*)* @FB_Test__Increment, void (%FB_Test*)** %Increment, align [filtered] ret void } define void @__init_fb_test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 - %deref = load %FB_Test*, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] + %deref = load %FB_Test*, %FB_Test** %self, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_FB_Test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] ret void } define void @__user_init___vtable_FB_Test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] ret void } @@ -1224,71 +1224,71 @@ fn this_in_method_and_body_in_function_block() { define void @FB_Test(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %val = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 - %deref = load %FB_Test*, %FB_Test** %this, align 8 + %deref = load %FB_Test*, %FB_Test** %this, align [filtered] %val1 = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 1 - %load_val = load i16, i16* %val1, align 2 - store i16 %load_val, i16* %val, align 2 - %deref2 = load %FB_Test*, %FB_Test** %this, align 8 + %load_val = load i16, i16* %val1, align [filtered] + store i16 %load_val, i16* %val, align [filtered] + %deref2 = load %FB_Test*, %FB_Test** %this, align [filtered] %val3 = getelementptr inbounds %FB_Test, %FB_Test* %deref2, i32 0, i32 1 - %load_val4 = load i16, i16* %val, align 2 - store i16 %load_val4, i16* %val3, align 2 + %load_val4 = load i16, i16* %val, align [filtered] + store i16 %load_val4, i16* %val3, align [filtered] ret void } define i16 @FB_Test__GetVal(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %val = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 - %FB_Test.GetVal = alloca i16, align 2 - store i16 0, i16* %FB_Test.GetVal, align 2 - %deref = load %FB_Test*, %FB_Test** %this, align 8 + %FB_Test.GetVal = alloca i16, align [filtered] + store i16 0, i16* %FB_Test.GetVal, align [filtered] + %deref = load %FB_Test*, %FB_Test** %this, align [filtered] %val1 = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 1 - %load_val = load i16, i16* %val1, align 2 - store i16 %load_val, i16* %FB_Test.GetVal, align 2 - %FB_Test__GetVal_ret = load i16, i16* %FB_Test.GetVal, align 2 + %load_val = load i16, i16* %val1, align [filtered] + store i16 %load_val, i16* %FB_Test.GetVal, align [filtered] + %FB_Test__GetVal_ret = load i16, i16* %FB_Test.GetVal, align [filtered] ret i16 %FB_Test__GetVal_ret } define void @__init___vtable_fb_test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 - %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] + %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %__body = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref, i32 0, i32 0 - store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align 8 - %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align [filtered] + %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %GetVal = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref1, i32 0, i32 1 - store i16 (%FB_Test*)* @FB_Test__GetVal, i16 (%FB_Test*)** %GetVal, align 8 + store i16 (%FB_Test*)* @FB_Test__GetVal, i16 (%FB_Test*)** %GetVal, align [filtered] ret void } define void @__init_fb_test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 - %deref = load %FB_Test*, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] + %deref = load %FB_Test*, %FB_Test** %self, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_FB_Test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] ret void } define void @__user_init___vtable_FB_Test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] ret void } @@ -1350,8 +1350,8 @@ fn pass_this_to_method() { define void @FB_Test(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %x = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 ret void @@ -1359,44 +1359,44 @@ fn pass_this_to_method() { define void @FB_Test__foo(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %x = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 - %test = alloca %FB_Test2, align 8 - %x1 = alloca i16, align 2 + %test = alloca %FB_Test2, align [filtered] + %x1 = alloca i16, align [filtered] %1 = bitcast %FB_Test2* %test to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 bitcast (%FB_Test2* @__FB_Test2__init to i8*), i64 ptrtoint (%FB_Test2* getelementptr (%FB_Test2, %FB_Test2* null, i32 1) to i64), i1 false) - store i16 0, i16* %x1, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] bitcast (%FB_Test2* @__FB_Test2__init to i8*), i64 ptrtoint (%FB_Test2* getelementptr (%FB_Test2, %FB_Test2* null, i32 1) to i64), i1 false) + store i16 0, i16* %x1, align [filtered] call void @__init_fb_test2(%FB_Test2* %test) call void @__user_init_FB_Test2(%FB_Test2* %test) - %2 = load %FB_Test*, %FB_Test** %this, align 8 + %2 = load %FB_Test*, %FB_Test** %this, align [filtered] %call = call i16 @FB_Test2__bar(%FB_Test2* %test, %FB_Test* %2) ret void } define void @FB_Test2(%FB_Test2* %0) { entry: - %this = alloca %FB_Test2*, align 8 - store %FB_Test2* %0, %FB_Test2** %this, align 8 + %this = alloca %FB_Test2*, align [filtered] + store %FB_Test2* %0, %FB_Test2** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test2, %FB_Test2* %0, i32 0, i32 0 ret void } define i16 @FB_Test2__bar(%FB_Test2* %0, %FB_Test* %1) { entry: - %this = alloca %FB_Test2*, align 8 - store %FB_Test2* %0, %FB_Test2** %this, align 8 + %this = alloca %FB_Test2*, align [filtered] + store %FB_Test2* %0, %FB_Test2** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test2, %FB_Test2* %0, i32 0, i32 0 - %FB_Test2.bar = alloca i16, align 2 - %test = alloca %FB_Test*, align 8 - store %FB_Test* %1, %FB_Test** %test, align 8 - store i16 0, i16* %FB_Test2.bar, align 2 - %deref = load %FB_Test*, %FB_Test** %test, align 8 + %FB_Test2.bar = alloca i16, align [filtered] + %test = alloca %FB_Test*, align [filtered] + store %FB_Test* %1, %FB_Test** %test, align [filtered] + store i16 0, i16* %FB_Test2.bar, align [filtered] + %deref = load %FB_Test*, %FB_Test** %test, align [filtered] %x = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 1 - %load_x = load i16, i16* %x, align 2 - store i16 %load_x, i16* %FB_Test2.bar, align 2 - %FB_Test2__bar_ret = load i16, i16* %FB_Test2.bar, align 2 + %load_x = load i16, i16* %x, align [filtered] + store i16 %load_x, i16* %FB_Test2.bar, align [filtered] + %FB_Test2__bar_ret = load i16, i16* %FB_Test2.bar, align [filtered] ret i16 %FB_Test2__bar_ret } @@ -1405,75 +1405,75 @@ fn pass_this_to_method() { define void @__init___vtable_fb_test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 - %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] + %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %__body = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref, i32 0, i32 0 - store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align 8 - %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align [filtered] + %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %foo = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref1, i32 0, i32 1 - store void (%FB_Test*)* @FB_Test__foo, void (%FB_Test*)** %foo, align 8 + store void (%FB_Test*)* @FB_Test__foo, void (%FB_Test*)** %foo, align [filtered] ret void } define void @__init___vtable_fb_test2(%__vtable_FB_Test2* %0) { entry: - %self = alloca %__vtable_FB_Test2*, align 8 - store %__vtable_FB_Test2* %0, %__vtable_FB_Test2** %self, align 8 - %deref = load %__vtable_FB_Test2*, %__vtable_FB_Test2** %self, align 8 + %self = alloca %__vtable_FB_Test2*, align [filtered] + store %__vtable_FB_Test2* %0, %__vtable_FB_Test2** %self, align [filtered] + %deref = load %__vtable_FB_Test2*, %__vtable_FB_Test2** %self, align [filtered] %__body = getelementptr inbounds %__vtable_FB_Test2, %__vtable_FB_Test2* %deref, i32 0, i32 0 - store void (%FB_Test2*)* @FB_Test2, void (%FB_Test2*)** %__body, align 8 - %deref1 = load %__vtable_FB_Test2*, %__vtable_FB_Test2** %self, align 8 + store void (%FB_Test2*)* @FB_Test2, void (%FB_Test2*)** %__body, align [filtered] + %deref1 = load %__vtable_FB_Test2*, %__vtable_FB_Test2** %self, align [filtered] %bar = getelementptr inbounds %__vtable_FB_Test2, %__vtable_FB_Test2* %deref1, i32 0, i32 1 - store i16 (%FB_Test2*, %FB_Test*)* @FB_Test2__bar, i16 (%FB_Test2*, %FB_Test*)** %bar, align 8 + store i16 (%FB_Test2*, %FB_Test*)* @FB_Test2__bar, i16 (%FB_Test2*, %FB_Test*)** %bar, align [filtered] ret void } define void @__init_fb_test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 - %deref = load %FB_Test*, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] + %deref = load %FB_Test*, %FB_Test** %self, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_fb_test2(%FB_Test2* %0) { entry: - %self = alloca %FB_Test2*, align 8 - store %FB_Test2* %0, %FB_Test2** %self, align 8 - %deref = load %FB_Test2*, %FB_Test2** %self, align 8 + %self = alloca %FB_Test2*, align [filtered] + store %FB_Test2* %0, %FB_Test2** %self, align [filtered] + %deref = load %FB_Test2*, %FB_Test2** %self, align [filtered] %__vtable = getelementptr inbounds %FB_Test2, %FB_Test2* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_FB_Test2* @__vtable_FB_Test2_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_FB_Test2* @__vtable_FB_Test2_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_FB_Test2(%__vtable_FB_Test2* %0) { entry: - %self = alloca %__vtable_FB_Test2*, align 8 - store %__vtable_FB_Test2* %0, %__vtable_FB_Test2** %self, align 8 + %self = alloca %__vtable_FB_Test2*, align [filtered] + store %__vtable_FB_Test2* %0, %__vtable_FB_Test2** %self, align [filtered] ret void } define void @__user_init_FB_Test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] ret void } define void @__user_init_FB_Test2(%FB_Test2* %0) { entry: - %self = alloca %FB_Test2*, align 8 - store %FB_Test2* %0, %FB_Test2** %self, align 8 + %self = alloca %FB_Test2*, align [filtered] + store %FB_Test2* %0, %FB_Test2** %self, align [filtered] ret void } define void @__user_init___vtable_FB_Test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] ret void } @@ -1526,8 +1526,8 @@ fn this_with_shadowed_variable() { define void @FB_Test(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %val = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 ret void @@ -1535,59 +1535,59 @@ fn this_with_shadowed_variable() { define void @FB_Test__shadow_val(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %val = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 - %val1 = alloca i16, align 2 - %local_val = alloca i16, align 2 - %shadow_val = alloca i16, align 2 - store i16 10, i16* %val1, align 2 - store i16 0, i16* %local_val, align 2 - store i16 0, i16* %shadow_val, align 2 - %deref = load %FB_Test*, %FB_Test** %this, align 8 + %val1 = alloca i16, align [filtered] + %local_val = alloca i16, align [filtered] + %shadow_val = alloca i16, align [filtered] + store i16 10, i16* %val1, align [filtered] + store i16 0, i16* %local_val, align [filtered] + store i16 0, i16* %shadow_val, align [filtered] + %deref = load %FB_Test*, %FB_Test** %this, align [filtered] %val2 = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 1 - %load_val = load i16, i16* %val2, align 2 - store i16 %load_val, i16* %local_val, align 2 - %load_val3 = load i16, i16* %val1, align 2 - store i16 %load_val3, i16* %shadow_val, align 2 + %load_val = load i16, i16* %val2, align [filtered] + store i16 %load_val, i16* %local_val, align [filtered] + %load_val3 = load i16, i16* %val1, align [filtered] + store i16 %load_val3, i16* %shadow_val, align [filtered] ret void } define void @__init___vtable_fb_test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 - %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] + %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %__body = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref, i32 0, i32 0 - store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align 8 - %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align [filtered] + %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %shadow_val = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref1, i32 0, i32 1 - store void (%FB_Test*)* @FB_Test__shadow_val, void (%FB_Test*)** %shadow_val, align 8 + store void (%FB_Test*)* @FB_Test__shadow_val, void (%FB_Test*)** %shadow_val, align [filtered] ret void } define void @__init_fb_test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 - %deref = load %FB_Test*, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] + %deref = load %FB_Test*, %FB_Test** %self, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_FB_Test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] ret void } define void @__user_init___vtable_FB_Test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] ret void } @@ -1634,60 +1634,60 @@ fn this_calling_function_and_passing_this() { define void @FB_Test(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %x = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 - %1 = load %FB_Test*, %FB_Test** %this, align 8 + %1 = load %FB_Test*, %FB_Test** %this, align [filtered] %call = call i16 @foo(%FB_Test* %1) ret void } define i16 @foo(%FB_Test* %0) { entry: - %foo = alloca i16, align 2 - %pfb = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %pfb, align 8 - store i16 0, i16* %foo, align 2 - %deref = load %FB_Test*, %FB_Test** %pfb, align 8 + %foo = alloca i16, align [filtered] + %pfb = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %pfb, align [filtered] + store i16 0, i16* %foo, align [filtered] + %deref = load %FB_Test*, %FB_Test** %pfb, align [filtered] %x = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 1 - %load_x = load i16, i16* %x, align 2 - store i16 %load_x, i16* %foo, align 2 - %foo_ret = load i16, i16* %foo, align 2 + %load_x = load i16, i16* %x, align [filtered] + store i16 %load_x, i16* %foo, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret } define void @__init___vtable_fb_test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 - %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] + %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %__body = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref, i32 0, i32 0 - store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align 8 + store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align [filtered] ret void } define void @__init_fb_test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 - %deref = load %FB_Test*, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] + %deref = load %FB_Test*, %FB_Test** %self, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_FB_Test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] ret void } define void @__user_init___vtable_FB_Test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] ret void } @@ -1740,8 +1740,8 @@ fn this_in_property_and_calling_method() { define void @FB_Test(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %x = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 ret void @@ -1749,97 +1749,97 @@ fn this_in_property_and_calling_method() { define i16 @FB_Test__DoubleX(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %x = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 - %FB_Test.DoubleX = alloca i16, align 2 - store i16 0, i16* %FB_Test.DoubleX, align 2 - %deref = load %FB_Test*, %FB_Test** %this, align 8 + %FB_Test.DoubleX = alloca i16, align [filtered] + store i16 0, i16* %FB_Test.DoubleX, align [filtered] + %deref = load %FB_Test*, %FB_Test** %this, align [filtered] %x1 = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 1 - %load_x = load i16, i16* %x1, align 2 + %load_x = load i16, i16* %x1, align [filtered] %1 = sext i16 %load_x to i32 %tmpVar = mul i32 2, %1 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %FB_Test.DoubleX, align 2 - %FB_Test__DoubleX_ret = load i16, i16* %FB_Test.DoubleX, align 2 + store i16 %2, i16* %FB_Test.DoubleX, align [filtered] + %FB_Test__DoubleX_ret = load i16, i16* %FB_Test.DoubleX, align [filtered] ret i16 %FB_Test__DoubleX_ret } define i16 @FB_Test____get_Value(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %x = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 - %FB_Test.__get_Value = alloca i16, align 2 - %Value = alloca i16, align 2 - store i16 0, i16* %Value, align 2 - store i16 0, i16* %FB_Test.__get_Value, align 2 - %deref = load %FB_Test*, %FB_Test** %this, align 8 + %FB_Test.__get_Value = alloca i16, align [filtered] + %Value = alloca i16, align [filtered] + store i16 0, i16* %Value, align [filtered] + store i16 0, i16* %FB_Test.__get_Value, align [filtered] + %deref = load %FB_Test*, %FB_Test** %this, align [filtered] %call = call i16 @FB_Test__DoubleX(%FB_Test* %deref) - store i16 %call, i16* %Value, align 2 - %load_Value = load i16, i16* %Value, align 2 - store i16 %load_Value, i16* %FB_Test.__get_Value, align 2 - %FB_Test____get_Value_ret = load i16, i16* %FB_Test.__get_Value, align 2 + store i16 %call, i16* %Value, align [filtered] + %load_Value = load i16, i16* %Value, align [filtered] + store i16 %load_Value, i16* %FB_Test.__get_Value, align [filtered] + %FB_Test____get_Value_ret = load i16, i16* %FB_Test.__get_Value, align [filtered] ret i16 %FB_Test____get_Value_ret } define void @FB_Test____set_Value(%FB_Test* %0, i16 %1) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %x = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 - %Value = alloca i16, align 2 - store i16 %1, i16* %Value, align 2 - %deref = load %FB_Test*, %FB_Test** %this, align 8 + %Value = alloca i16, align [filtered] + store i16 %1, i16* %Value, align [filtered] + %deref = load %FB_Test*, %FB_Test** %this, align [filtered] %x1 = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 1 - %load_Value = load i16, i16* %Value, align 2 - store i16 %load_Value, i16* %x1, align 2 + %load_Value = load i16, i16* %Value, align [filtered] + store i16 %load_Value, i16* %x1, align [filtered] ret void } define void @__init___vtable_fb_test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 - %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] + %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %__body = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref, i32 0, i32 0 - store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align 8 - %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align [filtered] + %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %DoubleX = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref1, i32 0, i32 1 - store i16 (%FB_Test*)* @FB_Test__DoubleX, i16 (%FB_Test*)** %DoubleX, align 8 - %deref2 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + store i16 (%FB_Test*)* @FB_Test__DoubleX, i16 (%FB_Test*)** %DoubleX, align [filtered] + %deref2 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %__get_Value = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref2, i32 0, i32 2 - store i16 (%FB_Test*)* @FB_Test____get_Value, i16 (%FB_Test*)** %__get_Value, align 8 - %deref3 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + store i16 (%FB_Test*)* @FB_Test____get_Value, i16 (%FB_Test*)** %__get_Value, align [filtered] + %deref3 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %__set_Value = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref3, i32 0, i32 3 - store void (%FB_Test*, i16)* @FB_Test____set_Value, void (%FB_Test*, i16)** %__set_Value, align 8 + store void (%FB_Test*, i16)* @FB_Test____set_Value, void (%FB_Test*, i16)** %__set_Value, align [filtered] ret void } define void @__init_fb_test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 - %deref = load %FB_Test*, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] + %deref = load %FB_Test*, %FB_Test** %self, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_FB_Test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] ret void } define void @__user_init___vtable_FB_Test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] ret void } @@ -1885,8 +1885,8 @@ fn this_with_self_pointer() { define void @FB_Test(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %refToSelf = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 ret void @@ -1894,53 +1894,53 @@ fn this_with_self_pointer() { define void @FB_Test__InitRef(%FB_Test* %0) { entry: - %this = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %this, align 8 + %this = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %this, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 0 %refToSelf = getelementptr inbounds %FB_Test, %FB_Test* %0, i32 0, i32 1 - %deref = load %FB_Test*, %FB_Test** %this, align 8 - store %FB_Test* %deref, %FB_Test** %refToSelf, align 8 - %deref1 = load %FB_Test*, %FB_Test** %this, align 8 - store %FB_Test* %deref1, %FB_Test** %refToSelf, align 8 - %1 = load %FB_Test*, %FB_Test** %this, align 8 - store %FB_Test* %1, %FB_Test** %refToSelf, align 8 + %deref = load %FB_Test*, %FB_Test** %this, align [filtered] + store %FB_Test* %deref, %FB_Test** %refToSelf, align [filtered] + %deref1 = load %FB_Test*, %FB_Test** %this, align [filtered] + store %FB_Test* %deref1, %FB_Test** %refToSelf, align [filtered] + %1 = load %FB_Test*, %FB_Test** %this, align [filtered] + store %FB_Test* %1, %FB_Test** %refToSelf, align [filtered] ret void } define void @__init___vtable_fb_test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 - %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] + %deref = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %__body = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref, i32 0, i32 0 - store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align 8 - %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align 8 + store void (%FB_Test*)* @FB_Test, void (%FB_Test*)** %__body, align [filtered] + %deref1 = load %__vtable_FB_Test*, %__vtable_FB_Test** %self, align [filtered] %InitRef = getelementptr inbounds %__vtable_FB_Test, %__vtable_FB_Test* %deref1, i32 0, i32 1 - store void (%FB_Test*)* @FB_Test__InitRef, void (%FB_Test*)** %InitRef, align 8 + store void (%FB_Test*)* @FB_Test__InitRef, void (%FB_Test*)** %InitRef, align [filtered] ret void } define void @__init_fb_test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 - %deref = load %FB_Test*, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] + %deref = load %FB_Test*, %FB_Test** %self, align [filtered] %__vtable = getelementptr inbounds %FB_Test, %FB_Test* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_FB_Test* @__vtable_FB_Test_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_FB_Test(%FB_Test* %0) { entry: - %self = alloca %FB_Test*, align 8 - store %FB_Test* %0, %FB_Test** %self, align 8 + %self = alloca %FB_Test*, align [filtered] + store %FB_Test* %0, %FB_Test** %self, align [filtered] ret void } define void @__user_init___vtable_FB_Test(%__vtable_FB_Test* %0) { entry: - %self = alloca %__vtable_FB_Test*, align 8 - store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align 8 + %self = alloca %__vtable_FB_Test*, align [filtered] + store %__vtable_FB_Test* %0, %__vtable_FB_Test** %self, align [filtered] ret void } @@ -1984,8 +1984,8 @@ fn this_in_variable_initialization() { define void @FB(%FB* %0) { entry: - %this = alloca %FB*, align 8 - store %FB* %0, %FB** %this, align 8 + %this = alloca %FB*, align [filtered] + store %FB* %0, %FB** %this, align [filtered] %__vtable = getelementptr inbounds %FB, %FB* %0, i32 0, i32 0 %x = getelementptr inbounds %FB, %FB* %0, i32 0, i32 1 %self = getelementptr inbounds %FB, %FB* %0, i32 0, i32 2 @@ -1995,35 +1995,35 @@ fn this_in_variable_initialization() { define void @__init___vtable_fb(%__vtable_FB* %0) { entry: - %self = alloca %__vtable_FB*, align 8 - store %__vtable_FB* %0, %__vtable_FB** %self, align 8 - %deref = load %__vtable_FB*, %__vtable_FB** %self, align 8 + %self = alloca %__vtable_FB*, align [filtered] + store %__vtable_FB* %0, %__vtable_FB** %self, align [filtered] + %deref = load %__vtable_FB*, %__vtable_FB** %self, align [filtered] %__body = getelementptr inbounds %__vtable_FB, %__vtable_FB* %deref, i32 0, i32 0 - store void (%FB*)* @FB, void (%FB*)** %__body, align 8 + store void (%FB*)* @FB, void (%FB*)** %__body, align [filtered] ret void } define void @__init_fb(%FB* %0) { entry: - %self = alloca %FB*, align 8 - store %FB* %0, %FB** %self, align 8 - %deref = load %FB*, %FB** %self, align 8 + %self = alloca %FB*, align [filtered] + store %FB* %0, %FB** %self, align [filtered] + %deref = load %FB*, %FB** %self, align [filtered] %__vtable = getelementptr inbounds %FB, %FB* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_FB* @__vtable_FB_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_FB* @__vtable_FB_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_FB(%FB* %0) { entry: - %self = alloca %FB*, align 8 - store %FB* %0, %FB** %self, align 8 + %self = alloca %FB*, align [filtered] + store %FB* %0, %FB** %self, align [filtered] ret void } define void @__user_init___vtable_FB(%__vtable_FB* %0) { entry: - %self = alloca %__vtable_FB*, align 8 - store %__vtable_FB* %0, %__vtable_FB** %self, align 8 + %self = alloca %__vtable_FB*, align [filtered] + store %__vtable_FB* %0, %__vtable_FB** %self, align [filtered] ret void } @@ -2064,53 +2064,53 @@ fn this_in_action_in_functionblock() { define void @fb(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 ret void } define void @fb__foo(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 - %deref = load %fb*, %fb** %this, align 8 + %deref = load %fb*, %fb** %this, align [filtered] call void @fb(%fb* %deref) ret void } define void @__init___vtable_fb(%__vtable_fb* %0) { entry: - %self = alloca %__vtable_fb*, align 8 - store %__vtable_fb* %0, %__vtable_fb** %self, align 8 - %deref = load %__vtable_fb*, %__vtable_fb** %self, align 8 + %self = alloca %__vtable_fb*, align [filtered] + store %__vtable_fb* %0, %__vtable_fb** %self, align [filtered] + %deref = load %__vtable_fb*, %__vtable_fb** %self, align [filtered] %__body = getelementptr inbounds %__vtable_fb, %__vtable_fb* %deref, i32 0, i32 0 - store void (%fb*)* @fb, void (%fb*)** %__body, align 8 + store void (%fb*)* @fb, void (%fb*)** %__body, align [filtered] ret void } define void @__init_fb(%fb* %0) { entry: - %self = alloca %fb*, align 8 - store %fb* %0, %fb** %self, align 8 - %deref = load %fb*, %fb** %self, align 8 + %self = alloca %fb*, align [filtered] + store %fb* %0, %fb** %self, align [filtered] + %deref = load %fb*, %fb** %self, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_fb* @__vtable_fb_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_fb* @__vtable_fb_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_fb(%fb* %0) { entry: - %self = alloca %fb*, align 8 - store %fb* %0, %fb** %self, align 8 + %self = alloca %fb*, align [filtered] + store %fb* %0, %fb** %self, align [filtered] ret void } define void @__user_init___vtable_fb(%__vtable_fb* %0) { entry: - %self = alloca %__vtable_fb*, align 8 - store %__vtable_fb* %0, %__vtable_fb** %self, align 8 + %self = alloca %__vtable_fb*, align [filtered] + store %__vtable_fb* %0, %__vtable_fb** %self, align [filtered] ret void } @@ -2150,59 +2150,59 @@ fn this_calling_functionblock_body_from_method() { define void @fb(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 ret void } define i16 @fb__foo(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 - %fb.foo = alloca i16, align 2 - store i16 0, i16* %fb.foo, align 2 - %deref = load %fb*, %fb** %this, align 8 + %fb.foo = alloca i16, align [filtered] + store i16 0, i16* %fb.foo, align [filtered] + %deref = load %fb*, %fb** %this, align [filtered] call void @fb(%fb* %deref) - %fb__foo_ret = load i16, i16* %fb.foo, align 2 + %fb__foo_ret = load i16, i16* %fb.foo, align [filtered] ret i16 %fb__foo_ret } define void @__init___vtable_fb(%__vtable_fb* %0) { entry: - %self = alloca %__vtable_fb*, align 8 - store %__vtable_fb* %0, %__vtable_fb** %self, align 8 - %deref = load %__vtable_fb*, %__vtable_fb** %self, align 8 + %self = alloca %__vtable_fb*, align [filtered] + store %__vtable_fb* %0, %__vtable_fb** %self, align [filtered] + %deref = load %__vtable_fb*, %__vtable_fb** %self, align [filtered] %__body = getelementptr inbounds %__vtable_fb, %__vtable_fb* %deref, i32 0, i32 0 - store void (%fb*)* @fb, void (%fb*)** %__body, align 8 - %deref1 = load %__vtable_fb*, %__vtable_fb** %self, align 8 + store void (%fb*)* @fb, void (%fb*)** %__body, align [filtered] + %deref1 = load %__vtable_fb*, %__vtable_fb** %self, align [filtered] %foo = getelementptr inbounds %__vtable_fb, %__vtable_fb* %deref1, i32 0, i32 1 - store i16 (%fb*)* @fb__foo, i16 (%fb*)** %foo, align 8 + store i16 (%fb*)* @fb__foo, i16 (%fb*)** %foo, align [filtered] ret void } define void @__init_fb(%fb* %0) { entry: - %self = alloca %fb*, align 8 - store %fb* %0, %fb** %self, align 8 - %deref = load %fb*, %fb** %self, align 8 + %self = alloca %fb*, align [filtered] + store %fb* %0, %fb** %self, align [filtered] + %deref = load %fb*, %fb** %self, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_fb* @__vtable_fb_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_fb* @__vtable_fb_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_fb(%fb* %0) { entry: - %self = alloca %fb*, align 8 - store %fb* %0, %fb** %self, align 8 + %self = alloca %fb*, align [filtered] + store %fb* %0, %fb** %self, align [filtered] ret void } define void @__user_init___vtable_fb(%__vtable_fb* %0) { entry: - %self = alloca %__vtable_fb*, align 8 - store %__vtable_fb* %0, %__vtable_fb** %self, align 8 + %self = alloca %__vtable_fb*, align [filtered] + store %__vtable_fb* %0, %__vtable_fb** %self, align [filtered] ret void } @@ -2259,103 +2259,103 @@ fn fb_extension_with_output() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } define i16 @foo__met1(%foo* %0, i16 %1, i16 %2, i16* %3) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %foo.met1 = alloca i16, align 2 - %mandatoryInput = alloca i16, align 2 - store i16 %1, i16* %mandatoryInput, align 2 - %optionalInput = alloca i16, align 2 - store i16 %2, i16* %optionalInput, align 2 - %outputValue = alloca i16*, align 8 - store i16* %3, i16** %outputValue, align 8 - store i16 0, i16* %foo.met1, align 2 - %foo__met1_ret = load i16, i16* %foo.met1, align 2 + %foo.met1 = alloca i16, align [filtered] + %mandatoryInput = alloca i16, align [filtered] + store i16 %1, i16* %mandatoryInput, align [filtered] + %optionalInput = alloca i16, align [filtered] + store i16 %2, i16* %optionalInput, align [filtered] + %outputValue = alloca i16*, align [filtered] + store i16* %3, i16** %outputValue, align [filtered] + store i16 0, i16* %foo.met1, align [filtered] + %foo__met1_ret = load i16, i16* %foo.met1, align [filtered] ret i16 %foo__met1_ret } define void @foo2(%foo2* %0) { entry: - %this = alloca %foo2*, align 8 - store %foo2* %0, %foo2** %this, align 8 + %this = alloca %foo2*, align [filtered] + store %foo2* %0, %foo2** %this, align [filtered] %__foo = getelementptr inbounds %foo2, %foo2* %0, i32 0, i32 0 - %deref = load %foo2*, %foo2** %this, align 8 + %deref = load %foo2*, %foo2** %this, align [filtered] %__foo1 = getelementptr inbounds %foo2, %foo2* %deref, i32 0, i32 0 %__vtable = getelementptr inbounds %foo, %foo* %__foo1, i32 0, i32 0 - %deref2 = load i32*, i32** %__vtable, align 8 + %deref2 = load i32*, i32** %__vtable, align [filtered] %cast = bitcast i32* %deref2 to %__vtable_foo2* %met1 = getelementptr inbounds %__vtable_foo2, %__vtable_foo2* %cast, i32 0, i32 1 - %1 = load i16 (%foo*, i16, i16, i16*)*, i16 (%foo*, i16, i16, i16*)** %met1, align 8 - %deref3 = load %foo2*, %foo2** %this, align 8 + %1 = load i16 (%foo*, i16, i16, i16*)*, i16 (%foo*, i16, i16, i16*)** %met1, align [filtered] + %deref3 = load %foo2*, %foo2** %this, align [filtered] %cast4 = bitcast %foo2* %deref3 to %foo* - %2 = alloca i16, align 2 + %2 = alloca i16, align [filtered] %fnptr_call = call i16 %1(%foo* %cast4, i16 0, i16 0, i16* %2) ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %met1 = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store i16 (%foo*, i16, i16, i16*)* @foo__met1, i16 (%foo*, i16, i16, i16*)** %met1, align 8 + store i16 (%foo*, i16, i16, i16*)* @foo__met1, i16 (%foo*, i16, i16, i16*)** %met1, align [filtered] ret void } define void @__init___vtable_foo2(%__vtable_foo2* %0) { entry: - %self = alloca %__vtable_foo2*, align 8 - store %__vtable_foo2* %0, %__vtable_foo2** %self, align 8 - %deref = load %__vtable_foo2*, %__vtable_foo2** %self, align 8 + %self = alloca %__vtable_foo2*, align [filtered] + store %__vtable_foo2* %0, %__vtable_foo2** %self, align [filtered] + %deref = load %__vtable_foo2*, %__vtable_foo2** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo2, %__vtable_foo2* %deref, i32 0, i32 0 - store void (%foo2*)* @foo2, void (%foo2*)** %__body, align 8 - %deref1 = load %__vtable_foo2*, %__vtable_foo2** %self, align 8 + store void (%foo2*)* @foo2, void (%foo2*)** %__body, align [filtered] + %deref1 = load %__vtable_foo2*, %__vtable_foo2** %self, align [filtered] %met1 = getelementptr inbounds %__vtable_foo2, %__vtable_foo2* %deref1, i32 0, i32 1 - store i16 (%foo*, i16, i16, i16*)* @foo__met1, i16 (%foo*, i16, i16, i16*)** %met1, align 8 + store i16 (%foo*, i16, i16, i16*)* @foo__met1, i16 (%foo*, i16, i16, i16*)** %met1, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_foo2(%foo2* %0) { entry: - %self = alloca %foo2*, align 8 - store %foo2* %0, %foo2** %self, align 8 - %deref = load %foo2*, %foo2** %self, align 8 + %self = alloca %foo2*, align [filtered] + store %foo2* %0, %foo2** %self, align [filtered] + %deref = load %foo2*, %foo2** %self, align [filtered] %__foo = getelementptr inbounds %foo2, %foo2* %deref, i32 0, i32 0 call void @__init_foo(%foo* %__foo) - %deref1 = load %foo2*, %foo2** %self, align 8 + %deref1 = load %foo2*, %foo2** %self, align [filtered] %__foo2 = getelementptr inbounds %foo2, %foo2* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %foo, %foo* %__foo2, i32 0, i32 0 - store i32* bitcast (%__vtable_foo2* @__vtable_foo2_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo2* @__vtable_foo2_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_foo2(%foo2* %0) { entry: - %self = alloca %foo2*, align 8 - store %foo2* %0, %foo2** %self, align 8 - %deref = load %foo2*, %foo2** %self, align 8 + %self = alloca %foo2*, align [filtered] + store %foo2* %0, %foo2** %self, align [filtered] + %deref = load %foo2*, %foo2** %self, align [filtered] %__foo = getelementptr inbounds %foo2, %foo2* %deref, i32 0, i32 0 call void @__user_init_foo(%foo* %__foo) ret void @@ -2363,22 +2363,22 @@ fn fb_extension_with_output() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init___vtable_foo2(%__vtable_foo2* %0) { entry: - %self = alloca %__vtable_foo2*, align 8 - store %__vtable_foo2* %0, %__vtable_foo2** %self, align 8 + %self = alloca %__vtable_foo2*, align [filtered] + store %__vtable_foo2* %0, %__vtable_foo2** %self, align [filtered] ret void } @@ -2450,41 +2450,41 @@ fn function_with_output_used_in_main_by_extension() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } define i16 @foo__met1(%foo* %0, i16 %1, i16 %2, i16* %3) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %foo.met1 = alloca i16, align 2 - %mandatoryInput = alloca i16, align 2 - store i16 %1, i16* %mandatoryInput, align 2 - %optionalInput = alloca i16, align 2 - store i16 %2, i16* %optionalInput, align 2 - %outputValue = alloca i16*, align 8 - store i16* %3, i16** %outputValue, align 8 - store i16 0, i16* %foo.met1, align 2 - %deref = load i16*, i16** %outputValue, align 8 - %load_mandatoryInput = load i16, i16* %mandatoryInput, align 2 + %foo.met1 = alloca i16, align [filtered] + %mandatoryInput = alloca i16, align [filtered] + store i16 %1, i16* %mandatoryInput, align [filtered] + %optionalInput = alloca i16, align [filtered] + store i16 %2, i16* %optionalInput, align [filtered] + %outputValue = alloca i16*, align [filtered] + store i16* %3, i16** %outputValue, align [filtered] + store i16 0, i16* %foo.met1, align [filtered] + %deref = load i16*, i16** %outputValue, align [filtered] + %load_mandatoryInput = load i16, i16* %mandatoryInput, align [filtered] %4 = sext i16 %load_mandatoryInput to i32 - %load_optionalInput = load i16, i16* %optionalInput, align 2 + %load_optionalInput = load i16, i16* %optionalInput, align [filtered] %5 = sext i16 %load_optionalInput to i32 %tmpVar = add i32 %4, %5 %6 = trunc i32 %tmpVar to i16 - store i16 %6, i16* %deref, align 2 - %foo__met1_ret = load i16, i16* %foo.met1, align 2 + store i16 %6, i16* %deref, align [filtered] + %foo__met1_ret = load i16, i16* %foo.met1, align [filtered] ret i16 %foo__met1_ret } define void @foo2(%foo2* %0) { entry: - %this = alloca %foo2*, align 8 - store %foo2* %0, %foo2** %this, align 8 + %this = alloca %foo2*, align [filtered] + store %foo2* %0, %foo2** %this, align [filtered] %__foo = getelementptr inbounds %foo2, %foo2* %0, i32 0, i32 0 %x = getelementptr inbounds %foo2, %foo2* %0, i32 0, i32 1 ret void @@ -2492,16 +2492,16 @@ fn function_with_output_used_in_main_by_extension() { define i32 @main() { entry: - %main = alloca i32, align 4 - %foo_inst = alloca %foo, align 8 - %foo2_inst = alloca %foo2, align 8 - %out = alloca i16, align 2 + %main = alloca i32, align [filtered] + %foo_inst = alloca %foo, align [filtered] + %foo2_inst = alloca %foo2, align [filtered] + %out = alloca i16, align [filtered] %0 = bitcast %foo* %foo_inst to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) %1 = bitcast %foo2* %foo2_inst to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 bitcast (%foo2* @__foo2__init to i8*), i64 ptrtoint (%foo2* getelementptr (%foo2, %foo2* null, i32 1) to i64), i1 false) - store i16 0, i16* %out, align 2 - store i32 0, i32* %main, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] bitcast (%foo2* @__foo2__init to i8*), i64 ptrtoint (%foo2* getelementptr (%foo2, %foo2* null, i32 1) to i64), i1 false) + store i16 0, i16* %out, align [filtered] + store i32 0, i32* %main, align [filtered] call void @__init_foo(%foo* %foo_inst) call void @__init_foo2(%foo2* %foo2_inst) call void @__user_init_foo(%foo* %foo_inst) @@ -2509,7 +2509,7 @@ fn function_with_output_used_in_main_by_extension() { %call = call i16 @foo__met1(%foo* %foo_inst, i16 1, i16 5, i16* %out) %__foo = getelementptr inbounds %foo2, %foo2* %foo2_inst, i32 0, i32 0 %call1 = call i16 @foo__met1(%foo* %__foo, i16 2, i16 5, i16* %out) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } @@ -2518,59 +2518,59 @@ fn function_with_output_used_in_main_by_extension() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %met1 = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store i16 (%foo*, i16, i16, i16*)* @foo__met1, i16 (%foo*, i16, i16, i16*)** %met1, align 8 + store i16 (%foo*, i16, i16, i16*)* @foo__met1, i16 (%foo*, i16, i16, i16*)** %met1, align [filtered] ret void } define void @__init___vtable_foo2(%__vtable_foo2* %0) { entry: - %self = alloca %__vtable_foo2*, align 8 - store %__vtable_foo2* %0, %__vtable_foo2** %self, align 8 - %deref = load %__vtable_foo2*, %__vtable_foo2** %self, align 8 + %self = alloca %__vtable_foo2*, align [filtered] + store %__vtable_foo2* %0, %__vtable_foo2** %self, align [filtered] + %deref = load %__vtable_foo2*, %__vtable_foo2** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo2, %__vtable_foo2* %deref, i32 0, i32 0 - store void (%foo2*)* @foo2, void (%foo2*)** %__body, align 8 - %deref1 = load %__vtable_foo2*, %__vtable_foo2** %self, align 8 + store void (%foo2*)* @foo2, void (%foo2*)** %__body, align [filtered] + %deref1 = load %__vtable_foo2*, %__vtable_foo2** %self, align [filtered] %met1 = getelementptr inbounds %__vtable_foo2, %__vtable_foo2* %deref1, i32 0, i32 1 - store i16 (%foo*, i16, i16, i16*)* @foo__met1, i16 (%foo*, i16, i16, i16*)** %met1, align 8 + store i16 (%foo*, i16, i16, i16*)* @foo__met1, i16 (%foo*, i16, i16, i16*)** %met1, align [filtered] ret void } define void @__init_foo2(%foo2* %0) { entry: - %self = alloca %foo2*, align 8 - store %foo2* %0, %foo2** %self, align 8 - %deref = load %foo2*, %foo2** %self, align 8 + %self = alloca %foo2*, align [filtered] + store %foo2* %0, %foo2** %self, align [filtered] + %deref = load %foo2*, %foo2** %self, align [filtered] %__foo = getelementptr inbounds %foo2, %foo2* %deref, i32 0, i32 0 call void @__init_foo(%foo* %__foo) - %deref1 = load %foo2*, %foo2** %self, align 8 + %deref1 = load %foo2*, %foo2** %self, align [filtered] %__foo2 = getelementptr inbounds %foo2, %foo2* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %foo, %foo* %__foo2, i32 0, i32 0 - store i32* bitcast (%__vtable_foo2* @__vtable_foo2_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo2* @__vtable_foo2_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_foo2(%foo2* %0) { entry: - %self = alloca %foo2*, align 8 - store %foo2* %0, %foo2** %self, align 8 - %deref = load %foo2*, %foo2** %self, align 8 + %self = alloca %foo2*, align [filtered] + store %foo2* %0, %foo2** %self, align [filtered] + %deref = load %foo2*, %foo2** %self, align [filtered] %__foo = getelementptr inbounds %foo2, %foo2* %deref, i32 0, i32 0 call void @__user_init_foo(%foo* %__foo) ret void @@ -2578,22 +2578,22 @@ fn function_with_output_used_in_main_by_extension() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init___vtable_foo2(%__vtable_foo2* %0) { entry: - %self = alloca %__vtable_foo2*, align 8 - store %__vtable_foo2* %0, %__vtable_foo2** %self, align 8 + %self = alloca %__vtable_foo2*, align [filtered] + store %__vtable_foo2* %0, %__vtable_foo2** %self, align [filtered] ret void } diff --git a/src/codegen/tests/oop_tests/debug_tests.rs b/src/codegen/tests/oop_tests/debug_tests.rs index bdada292c19..4009595cbbf 100644 --- a/src/codegen/tests/oop_tests/debug_tests.rs +++ b/src/codegen/tests/oop_tests/debug_tests.rs @@ -39,8 +39,8 @@ fn members_from_base_class_are_available_in_subclasses() { define void @foo(%foo* %0) !dbg !32 { entry: call void @llvm.dbg.declare(metadata %foo* %0, metadata !36, metadata !DIExpression()), !dbg !37 - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %a = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %b = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 @@ -51,8 +51,8 @@ fn members_from_base_class_are_available_in_subclasses() { define void @bar(%bar* %0) !dbg !38 { entry: call void @llvm.dbg.declare(metadata %bar* %0, metadata !41, metadata !DIExpression()), !dbg !42 - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %0, i32 0, i32 0 ret void, !dbg !42 } @@ -62,60 +62,60 @@ fn members_from_base_class_are_available_in_subclasses() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 - %deref = load %__vtable_bar*, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] + %deref = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %__body = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref, i32 0, i32 0 - store void (%bar*)* @bar, void (%bar*)** %__body, align 8 + store void (%bar*)* @bar, void (%bar*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__init_foo(%foo* %__foo) - %deref1 = load %bar*, %bar** %self, align 8 + %deref1 = load %bar*, %bar** %self, align [filtered] %__foo2 = getelementptr inbounds %bar, %bar* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %foo, %foo* %__foo2, i32 0, i32 0 - store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] ret void } define void @__user_init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__user_init_foo(%foo* %__foo) ret void @@ -123,15 +123,15 @@ fn members_from_base_class_are_available_in_subclasses() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } @@ -245,8 +245,8 @@ fn write_to_parent_variable_qualified_access() { define void @fb(%fb* %0) !dbg !32 { entry: call void @llvm.dbg.declare(metadata %fb* %0, metadata !36, metadata !DIExpression()), !dbg !37 - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 %x = getelementptr inbounds %fb, %fb* %0, i32 0, i32 1 %y = getelementptr inbounds %fb, %fb* %0, i32 0, i32 2 @@ -256,8 +256,8 @@ fn write_to_parent_variable_qualified_access() { define void @fb2(%fb2* %0) !dbg !38 { entry: call void @llvm.dbg.declare(metadata %fb2* %0, metadata !41, metadata !DIExpression()), !dbg !42 - %this = alloca %fb2*, align 8 - store %fb2* %0, %fb2** %this, align 8 + %this = alloca %fb2*, align [filtered] + store %fb2* %0, %fb2** %this, align [filtered] %__fb = getelementptr inbounds %fb2, %fb2* %0, i32 0, i32 0 ret void, !dbg !42 } @@ -265,13 +265,13 @@ fn write_to_parent_variable_qualified_access() { define void @foo(%foo* %0) !dbg !43 { entry: call void @llvm.dbg.declare(metadata %foo* %0, metadata !46, metadata !DIExpression()), !dbg !47 - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %myFb = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %__fb = getelementptr inbounds %fb2, %fb2* %myFb, i32 0, i32 0, !dbg !47 %x = getelementptr inbounds %fb, %fb* %__fb, i32 0, i32 1, !dbg !47 - store i16 1, i16* %x, align 2, !dbg !47 + store i16 1, i16* %x, align [filtered], !dbg !47 ret void, !dbg !48 } @@ -280,83 +280,83 @@ fn write_to_parent_variable_qualified_access() { define void @__init___vtable_fb(%__vtable_fb* %0) { entry: - %self = alloca %__vtable_fb*, align 8 - store %__vtable_fb* %0, %__vtable_fb** %self, align 8 - %deref = load %__vtable_fb*, %__vtable_fb** %self, align 8 + %self = alloca %__vtable_fb*, align [filtered] + store %__vtable_fb* %0, %__vtable_fb** %self, align [filtered] + %deref = load %__vtable_fb*, %__vtable_fb** %self, align [filtered] %__body = getelementptr inbounds %__vtable_fb, %__vtable_fb* %deref, i32 0, i32 0 - store void (%fb*)* @fb, void (%fb*)** %__body, align 8 + store void (%fb*)* @fb, void (%fb*)** %__body, align [filtered] ret void } define void @__init___vtable_fb2(%__vtable_fb2* %0) { entry: - %self = alloca %__vtable_fb2*, align 8 - store %__vtable_fb2* %0, %__vtable_fb2** %self, align 8 - %deref = load %__vtable_fb2*, %__vtable_fb2** %self, align 8 + %self = alloca %__vtable_fb2*, align [filtered] + store %__vtable_fb2* %0, %__vtable_fb2** %self, align [filtered] + %deref = load %__vtable_fb2*, %__vtable_fb2** %self, align [filtered] %__body = getelementptr inbounds %__vtable_fb2, %__vtable_fb2* %deref, i32 0, i32 0 - store void (%fb2*)* @fb2, void (%fb2*)** %__body, align 8 + store void (%fb2*)* @fb2, void (%fb2*)** %__body, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init_fb2(%fb2* %0) { entry: - %self = alloca %fb2*, align 8 - store %fb2* %0, %fb2** %self, align 8 - %deref = load %fb2*, %fb2** %self, align 8 + %self = alloca %fb2*, align [filtered] + store %fb2* %0, %fb2** %self, align [filtered] + %deref = load %fb2*, %fb2** %self, align [filtered] %__fb = getelementptr inbounds %fb2, %fb2* %deref, i32 0, i32 0 call void @__init_fb(%fb* %__fb) - %deref1 = load %fb2*, %fb2** %self, align 8 + %deref1 = load %fb2*, %fb2** %self, align [filtered] %__fb2 = getelementptr inbounds %fb2, %fb2* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %fb, %fb* %__fb2, i32 0, i32 0 - store i32* bitcast (%__vtable_fb2* @__vtable_fb2_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_fb2* @__vtable_fb2_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_fb(%fb* %0) { entry: - %self = alloca %fb*, align 8 - store %fb* %0, %fb** %self, align 8 - %deref = load %fb*, %fb** %self, align 8 + %self = alloca %fb*, align [filtered] + store %fb* %0, %fb** %self, align [filtered] + %deref = load %fb*, %fb** %self, align [filtered] %__vtable = getelementptr inbounds %fb, %fb* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_fb* @__vtable_fb_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_fb* @__vtable_fb_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %myFb = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 1 call void @__init_fb2(%fb2* %myFb) - %deref1 = load %foo*, %foo** %self, align 8 + %deref1 = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_fb(%fb* %0) { entry: - %self = alloca %fb*, align 8 - store %fb* %0, %fb** %self, align 8 + %self = alloca %fb*, align [filtered] + store %fb* %0, %fb** %self, align [filtered] ret void } define void @__user_init_fb2(%fb2* %0) { entry: - %self = alloca %fb2*, align 8 - store %fb2* %0, %fb2** %self, align 8 - %deref = load %fb2*, %fb2** %self, align 8 + %self = alloca %fb2*, align [filtered] + store %fb2* %0, %fb2** %self, align [filtered] + %deref = load %fb2*, %fb2** %self, align [filtered] %__fb = getelementptr inbounds %fb2, %fb2* %deref, i32 0, i32 0 call void @__user_init_fb(%fb* %__fb) ret void @@ -364,30 +364,30 @@ fn write_to_parent_variable_qualified_access() { define void @__user_init___vtable_fb(%__vtable_fb* %0) { entry: - %self = alloca %__vtable_fb*, align 8 - store %__vtable_fb* %0, %__vtable_fb** %self, align 8 + %self = alloca %__vtable_fb*, align [filtered] + store %__vtable_fb* %0, %__vtable_fb** %self, align [filtered] ret void } define void @__user_init___vtable_fb2(%__vtable_fb2* %0) { entry: - %self = alloca %__vtable_fb2*, align 8 - store %__vtable_fb2* %0, %__vtable_fb2** %self, align 8 + %self = alloca %__vtable_fb2*, align [filtered] + store %__vtable_fb2* %0, %__vtable_fb2** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %myFb = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 1 call void @__user_init_fb2(%fb2* %myFb) ret void @@ -512,8 +512,8 @@ fn write_to_parent_variable_in_instance() { define void @foo(%foo* %0) !dbg !26 { entry: call void @llvm.dbg.declare(metadata %foo* %0, metadata !30, metadata !DIExpression()), !dbg !31 - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 ret void, !dbg !31 @@ -522,37 +522,37 @@ fn write_to_parent_variable_in_instance() { define void @foo__baz(%foo* %0) !dbg !32 { entry: call void @llvm.dbg.declare(metadata %foo* %0, metadata !33, metadata !DIExpression()), !dbg !34 - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %1 = bitcast [81 x i8]* %s to i8*, !dbg !34 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false), !dbg !34 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false), !dbg !34 ret void, !dbg !35 } define void @bar(%bar* %0) !dbg !36 { entry: call void @llvm.dbg.declare(metadata %bar* %0, metadata !39, metadata !DIExpression()), !dbg !40 - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %__foo, i32 0, i32 1, !dbg !40 %1 = bitcast [81 x i8]* %s to i8*, !dbg !40 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false), !dbg !40 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false), !dbg !40 ret void, !dbg !41 } define void @main() !dbg !42 { entry: - %s = alloca [81 x i8], align 1 - %fb = alloca %bar, align 8 + %s = alloca [81 x i8], align [filtered] + %fb = alloca %bar, align [filtered] call void @llvm.dbg.declare(metadata [81 x i8]* %s, metadata !45, metadata !DIExpression()), !dbg !46 %0 = bitcast [81 x i8]* %s to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) call void @llvm.dbg.declare(metadata %bar* %fb, metadata !47, metadata !DIExpression()), !dbg !48 %1 = bitcast %bar* %fb to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 bitcast (%bar* @__bar__init to i8*), i64 ptrtoint (%bar* getelementptr (%bar, %bar* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] bitcast (%bar* @__bar__init to i8*), i64 ptrtoint (%bar* getelementptr (%bar, %bar* null, i32 1) to i64), i1 false) call void @__init_bar(%bar* %fb), !dbg !49 call void @__user_init_bar(%bar* %fb), !dbg !49 %__foo = getelementptr inbounds %bar, %bar* %fb, i32 0, i32 0, !dbg !49 @@ -575,66 +575,66 @@ fn write_to_parent_variable_in_instance() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %baz = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__baz, void (%foo*)** %baz, align 8 + store void (%foo*)* @foo__baz, void (%foo*)** %baz, align [filtered] ret void } define void @__init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 - %deref = load %__vtable_bar*, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] + %deref = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %__body = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref, i32 0, i32 0 - store void (%bar*)* @bar, void (%bar*)** %__body, align 8 - %deref1 = load %__vtable_bar*, %__vtable_bar** %self, align 8 + store void (%bar*)* @bar, void (%bar*)** %__body, align [filtered] + %deref1 = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %baz = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__baz, void (%foo*)** %baz, align 8 + store void (%foo*)* @foo__baz, void (%foo*)** %baz, align [filtered] ret void } define void @__init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__init_foo(%foo* %__foo) - %deref1 = load %bar*, %bar** %self, align 8 + %deref1 = load %bar*, %bar** %self, align [filtered] %__foo2 = getelementptr inbounds %bar, %bar* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %foo, %foo* %__foo2, i32 0, i32 0 - store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] ret void } define void @__user_init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__user_init_foo(%foo* %__foo) ret void @@ -642,15 +642,15 @@ fn write_to_parent_variable_in_instance() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } @@ -789,8 +789,8 @@ fn array_in_parent_generated() { define void @grandparent(%grandparent* %0) !dbg !38 { entry: call void @llvm.dbg.declare(metadata %grandparent* %0, metadata !42, metadata !DIExpression()), !dbg !43 - %this = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %this, align 8 + %this = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %this, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 0 %y = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 1 %a = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 2 @@ -800,8 +800,8 @@ fn array_in_parent_generated() { define void @parent(%parent* %0) !dbg !44 { entry: call void @llvm.dbg.declare(metadata %parent* %0, metadata !47, metadata !DIExpression()), !dbg !48 - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %x = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %b = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 @@ -811,8 +811,8 @@ fn array_in_parent_generated() { define void @child(%child* %0) !dbg !49 { entry: call void @llvm.dbg.declare(metadata %child* %0, metadata !52, metadata !DIExpression()), !dbg !53 - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %z = getelementptr inbounds %child, %child* %0, i32 0, i32 1 ret void, !dbg !53 @@ -820,34 +820,34 @@ fn array_in_parent_generated() { define void @main() !dbg !54 { entry: - %arr = alloca [11 x %child], align 8 + %arr = alloca [11 x %child], align [filtered] call void @llvm.dbg.declare(metadata [11 x %child]* %arr, metadata !57, metadata !DIExpression()), !dbg !59 %0 = bitcast [11 x %child]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([11 x %child]* getelementptr ([11 x %child], [11 x %child]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([11 x %child]* getelementptr ([11 x %child], [11 x %child]* null, i32 1) to i64), i1 false) %tmpVar = getelementptr inbounds [11 x %child], [11 x %child]* %arr, i32 0, i32 0, !dbg !60 %__parent = getelementptr inbounds %child, %child* %tmpVar, i32 0, i32 0, !dbg !60 %__grandparent = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 0, !dbg !60 %a = getelementptr inbounds %grandparent, %grandparent* %__grandparent, i32 0, i32 2, !dbg !60 - store i16 10, i16* %a, align 2, !dbg !60 + store i16 10, i16* %a, align [filtered], !dbg !60 %tmpVar1 = getelementptr inbounds [11 x %child], [11 x %child]* %arr, i32 0, i32 0, !dbg !61 %__parent2 = getelementptr inbounds %child, %child* %tmpVar1, i32 0, i32 0, !dbg !61 %__grandparent3 = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0, !dbg !61 %y = getelementptr inbounds %grandparent, %grandparent* %__grandparent3, i32 0, i32 1, !dbg !61 %tmpVar4 = getelementptr inbounds [6 x i16], [6 x i16]* %y, i32 0, i32 0, !dbg !61 - store i16 20, i16* %tmpVar4, align 2, !dbg !61 + store i16 20, i16* %tmpVar4, align [filtered], !dbg !61 %tmpVar5 = getelementptr inbounds [11 x %child], [11 x %child]* %arr, i32 0, i32 1, !dbg !62 %__parent6 = getelementptr inbounds %child, %child* %tmpVar5, i32 0, i32 0, !dbg !62 %b = getelementptr inbounds %parent, %parent* %__parent6, i32 0, i32 2, !dbg !62 - store i16 30, i16* %b, align 2, !dbg !62 + store i16 30, i16* %b, align [filtered], !dbg !62 %tmpVar7 = getelementptr inbounds [11 x %child], [11 x %child]* %arr, i32 0, i32 1, !dbg !63 %__parent8 = getelementptr inbounds %child, %child* %tmpVar7, i32 0, i32 0, !dbg !63 %x = getelementptr inbounds %parent, %parent* %__parent8, i32 0, i32 1, !dbg !63 %tmpVar9 = getelementptr inbounds [11 x i16], [11 x i16]* %x, i32 0, i32 1, !dbg !63 - store i16 40, i16* %tmpVar9, align 2, !dbg !63 + store i16 40, i16* %tmpVar9, align [filtered], !dbg !63 %tmpVar10 = getelementptr inbounds [11 x %child], [11 x %child]* %arr, i32 0, i32 2, !dbg !64 %z = getelementptr inbounds %child, %child* %tmpVar10, i32 0, i32 1, !dbg !64 %tmpVar11 = getelementptr inbounds [11 x i16], [11 x i16]* %z, i32 0, i32 2, !dbg !64 - store i16 50, i16* %tmpVar11, align 2, !dbg !64 + store i16 50, i16* %tmpVar11, align [filtered], !dbg !64 ret void, !dbg !65 } @@ -859,106 +859,106 @@ fn array_in_parent_generated() { define void @__init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 - %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] + %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_grandparent, %__vtable_grandparent* %deref, i32 0, i32 0 - store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align 8 + store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__grandparent = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__init_grandparent(%grandparent* %__grandparent) - %deref1 = load %parent*, %parent** %self, align 8 + %deref1 = load %parent*, %parent** %self, align [filtered] %__grandparent2 = getelementptr inbounds %parent, %parent* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent2, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 - %deref = load %grandparent*, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] + %deref = load %grandparent*, %grandparent** %self, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } define void @__user_init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -966,9 +966,9 @@ fn array_in_parent_generated() { define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__user_init_grandparent(%grandparent* %__grandparent) ret void @@ -1114,8 +1114,8 @@ fn complex_array_access_generated() { define void @grandparent(%grandparent* %0) !dbg !38 { entry: call void @llvm.dbg.declare(metadata %grandparent* %0, metadata !42, metadata !DIExpression()), !dbg !43 - %this = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %this, align 8 + %this = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %this, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 0 %y = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 1 %a = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 2 @@ -1125,8 +1125,8 @@ fn complex_array_access_generated() { define void @parent(%parent* %0) !dbg !44 { entry: call void @llvm.dbg.declare(metadata %parent* %0, metadata !47, metadata !DIExpression()), !dbg !48 - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %x = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %b = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 @@ -1136,34 +1136,34 @@ fn complex_array_access_generated() { define void @child(%child* %0) !dbg !49 { entry: call void @llvm.dbg.declare(metadata %child* %0, metadata !52, metadata !DIExpression()), !dbg !53 - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %z = getelementptr inbounds %child, %child* %0, i32 0, i32 1 %__grandparent = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 0, !dbg !53 %y = getelementptr inbounds %grandparent, %grandparent* %__grandparent, i32 0, i32 1, !dbg !53 %b = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2, !dbg !53 - %load_b = load i16, i16* %b, align 2, !dbg !53 + %load_b = load i16, i16* %b, align [filtered], !dbg !53 %1 = sext i16 %load_b to i32, !dbg !53 %b1 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2, !dbg !53 - %load_b2 = load i16, i16* %b1, align 2, !dbg !53 + %load_b2 = load i16, i16* %b1, align [filtered], !dbg !53 %2 = sext i16 %load_b2 to i32, !dbg !53 %tmpVar = mul i32 %2, 2, !dbg !53 %tmpVar3 = mul i32 1, %tmpVar, !dbg !53 %tmpVar4 = add i32 %tmpVar3, 0, !dbg !53 %tmpVar5 = getelementptr inbounds [11 x i16], [11 x i16]* %z, i32 0, i32 %tmpVar4, !dbg !53 - %load_tmpVar = load i16, i16* %tmpVar5, align 2, !dbg !53 + %load_tmpVar = load i16, i16* %tmpVar5, align [filtered], !dbg !53 %3 = sext i16 %load_tmpVar to i32, !dbg !53 %tmpVar6 = add i32 %1, %3, !dbg !53 %__grandparent7 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 0, !dbg !53 %a = getelementptr inbounds %grandparent, %grandparent* %__grandparent7, i32 0, i32 2, !dbg !53 - %load_a = load i16, i16* %a, align 2, !dbg !53 + %load_a = load i16, i16* %a, align [filtered], !dbg !53 %4 = sext i16 %load_a to i32, !dbg !53 %tmpVar8 = sub i32 %tmpVar6, %4, !dbg !53 %tmpVar9 = mul i32 1, %tmpVar8, !dbg !53 %tmpVar10 = add i32 %tmpVar9, 0, !dbg !53 %tmpVar11 = getelementptr inbounds [6 x i16], [6 x i16]* %y, i32 0, i32 %tmpVar10, !dbg !53 - store i16 20, i16* %tmpVar11, align 2, !dbg !53 + store i16 20, i16* %tmpVar11, align [filtered], !dbg !53 ret void, !dbg !54 } @@ -1172,106 +1172,106 @@ fn complex_array_access_generated() { define void @__init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 - %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] + %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_grandparent, %__vtable_grandparent* %deref, i32 0, i32 0 - store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align 8 + store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__init_grandparent(%grandparent* %__grandparent) - %deref1 = load %parent*, %parent** %self, align 8 + %deref1 = load %parent*, %parent** %self, align [filtered] %__grandparent2 = getelementptr inbounds %parent, %parent* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent2, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 - %deref = load %grandparent*, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] + %deref = load %grandparent*, %grandparent** %self, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__grandparent = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } define void @__user_init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -1279,9 +1279,9 @@ fn complex_array_access_generated() { define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__user_init_grandparent(%grandparent* %__grandparent) ret void @@ -1396,8 +1396,8 @@ fn function_block_method_debug_info() { define void @foo(%foo* %0) !dbg !20 { entry: call void @llvm.dbg.declare(metadata %foo* %0, metadata !24, metadata !DIExpression()), !dbg !25 - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void, !dbg !25 } @@ -1405,8 +1405,8 @@ fn function_block_method_debug_info() { define void @foo__baz(%foo* %0) !dbg !26 { entry: call void @llvm.dbg.declare(metadata %foo* %0, metadata !27, metadata !DIExpression()), !dbg !28 - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void, !dbg !28 } @@ -1414,8 +1414,8 @@ fn function_block_method_debug_info() { define void @bar(%bar* %0) !dbg !29 { entry: call void @llvm.dbg.declare(metadata %bar* %0, metadata !32, metadata !DIExpression()), !dbg !33 - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %0, i32 0, i32 0 ret void, !dbg !33 } @@ -1425,66 +1425,66 @@ fn function_block_method_debug_info() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %baz = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__baz, void (%foo*)** %baz, align 8 + store void (%foo*)* @foo__baz, void (%foo*)** %baz, align [filtered] ret void } define void @__init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 - %deref = load %__vtable_bar*, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] + %deref = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %__body = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref, i32 0, i32 0 - store void (%bar*)* @bar, void (%bar*)** %__body, align 8 - %deref1 = load %__vtable_bar*, %__vtable_bar** %self, align 8 + store void (%bar*)* @bar, void (%bar*)** %__body, align [filtered] + %deref1 = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %baz = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__baz, void (%foo*)** %baz, align 8 + store void (%foo*)* @foo__baz, void (%foo*)** %baz, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__init_foo(%foo* %__foo) - %deref1 = load %bar*, %bar** %self, align 8 + %deref1 = load %bar*, %bar** %self, align [filtered] %__foo2 = getelementptr inbounds %bar, %bar* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %foo, %foo* %__foo2, i32 0, i32 0 - store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] ret void } define void @__user_init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 call void @__user_init_foo(%foo* %__foo) ret void @@ -1492,15 +1492,15 @@ fn function_block_method_debug_info() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } @@ -1644,8 +1644,8 @@ END_FUNCTION define void @parent(%parent* %0) !dbg !30 { entry: call void @llvm.dbg.declare(metadata %parent* %0, metadata !34, metadata !DIExpression()), !dbg !35 - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %a = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 ret void, !dbg !35 @@ -1654,8 +1654,8 @@ END_FUNCTION define void @child(%child* %0) !dbg !36 { entry: call void @llvm.dbg.declare(metadata %child* %0, metadata !39, metadata !DIExpression()), !dbg !40 - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %b = getelementptr inbounds %child, %child* %0, i32 0, i32 1 ret void, !dbg !40 @@ -1664,8 +1664,8 @@ END_FUNCTION define void @grandchild(%grandchild* %0) !dbg !41 { entry: call void @llvm.dbg.declare(metadata %grandchild* %0, metadata !44, metadata !DIExpression()), !dbg !45 - %this = alloca %grandchild*, align 8 - store %grandchild* %0, %grandchild** %this, align 8 + %this = alloca %grandchild*, align [filtered] + store %grandchild* %0, %grandchild** %this, align [filtered] %__child = getelementptr inbounds %grandchild, %grandchild* %0, i32 0, i32 0 %c = getelementptr inbounds %grandchild, %grandchild* %0, i32 0, i32 1 ret void, !dbg !45 @@ -1673,33 +1673,33 @@ END_FUNCTION define i32 @main() !dbg !46 { entry: - %main = alloca i32, align 4 - %array_of_parent = alloca [3 x %parent], align 8 - %array_of_child = alloca [3 x %child], align 8 - %array_of_grandchild = alloca [3 x %grandchild], align 8 - %parent1 = alloca %parent, align 8 - %child1 = alloca %child, align 8 - %grandchild1 = alloca %grandchild, align 8 + %main = alloca i32, align [filtered] + %array_of_parent = alloca [3 x %parent], align [filtered] + %array_of_child = alloca [3 x %child], align [filtered] + %array_of_grandchild = alloca [3 x %grandchild], align [filtered] + %parent1 = alloca %parent, align [filtered] + %child1 = alloca %child, align [filtered] + %grandchild1 = alloca %grandchild, align [filtered] call void @llvm.dbg.declare(metadata [3 x %parent]* %array_of_parent, metadata !49, metadata !DIExpression()), !dbg !53 %0 = bitcast [3 x %parent]* %array_of_parent to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([3 x %parent]* getelementptr ([3 x %parent], [3 x %parent]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([3 x %parent]* getelementptr ([3 x %parent], [3 x %parent]* null, i32 1) to i64), i1 false) call void @llvm.dbg.declare(metadata [3 x %child]* %array_of_child, metadata !54, metadata !DIExpression()), !dbg !56 %1 = bitcast [3 x %child]* %array_of_child to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([3 x %child]* getelementptr ([3 x %child], [3 x %child]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([3 x %child]* getelementptr ([3 x %child], [3 x %child]* null, i32 1) to i64), i1 false) call void @llvm.dbg.declare(metadata [3 x %grandchild]* %array_of_grandchild, metadata !57, metadata !DIExpression()), !dbg !59 %2 = bitcast [3 x %grandchild]* %array_of_grandchild to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %2, i8 0, i64 ptrtoint ([3 x %grandchild]* getelementptr ([3 x %grandchild], [3 x %grandchild]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %2, i8 0, i64 ptrtoint ([3 x %grandchild]* getelementptr ([3 x %grandchild], [3 x %grandchild]* null, i32 1) to i64), i1 false) call void @llvm.dbg.declare(metadata %parent* %parent1, metadata !60, metadata !DIExpression()), !dbg !61 %3 = bitcast %parent* %parent1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %3, i8* align 1 bitcast (%parent* @__parent__init to i8*), i64 ptrtoint (%parent* getelementptr (%parent, %parent* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %3, i8* align [filtered] bitcast (%parent* @__parent__init to i8*), i64 ptrtoint (%parent* getelementptr (%parent, %parent* null, i32 1) to i64), i1 false) call void @llvm.dbg.declare(metadata %child* %child1, metadata !62, metadata !DIExpression()), !dbg !63 %4 = bitcast %child* %child1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %4, i8* align 1 bitcast (%child* @__child__init to i8*), i64 ptrtoint (%child* getelementptr (%child, %child* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %4, i8* align [filtered] bitcast (%child* @__child__init to i8*), i64 ptrtoint (%child* getelementptr (%child, %child* null, i32 1) to i64), i1 false) call void @llvm.dbg.declare(metadata %grandchild* %grandchild1, metadata !64, metadata !DIExpression()), !dbg !65 %5 = bitcast %grandchild* %grandchild1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %5, i8* align 1 bitcast (%grandchild* @__grandchild__init to i8*), i64 ptrtoint (%grandchild* getelementptr (%grandchild, %grandchild* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %5, i8* align [filtered] bitcast (%grandchild* @__grandchild__init to i8*), i64 ptrtoint (%grandchild* getelementptr (%grandchild, %grandchild* null, i32 1) to i64), i1 false) call void @llvm.dbg.declare(metadata i32* %main, metadata !66, metadata !DIExpression()), !dbg !67 - store i32 0, i32* %main, align 4 + store i32 0, i32* %main, align [filtered] call void @__init_parent(%parent* %parent1), !dbg !68 call void @__init_child(%child* %child1), !dbg !68 call void @__init_grandchild(%grandchild* %grandchild1), !dbg !68 @@ -1707,88 +1707,88 @@ END_FUNCTION call void @__user_init_child(%child* %child1), !dbg !68 call void @__user_init_grandchild(%grandchild* %grandchild1), !dbg !68 %a = getelementptr inbounds %parent, %parent* %parent1, i32 0, i32 1, !dbg !69 - store i32 1, i32* %a, align 4, !dbg !69 + store i32 1, i32* %a, align [filtered], !dbg !69 %__parent = getelementptr inbounds %child, %child* %child1, i32 0, i32 0, !dbg !70 %a1 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1, !dbg !70 - store i32 2, i32* %a1, align 4, !dbg !70 + store i32 2, i32* %a1, align [filtered], !dbg !70 %b = getelementptr inbounds %child, %child* %child1, i32 0, i32 1, !dbg !71 - store i32 3, i32* %b, align 4, !dbg !71 + store i32 3, i32* %b, align [filtered], !dbg !71 %__child = getelementptr inbounds %grandchild, %grandchild* %grandchild1, i32 0, i32 0, !dbg !72 %__parent2 = getelementptr inbounds %child, %child* %__child, i32 0, i32 0, !dbg !72 %a3 = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 1, !dbg !72 - store i32 4, i32* %a3, align 4, !dbg !72 + store i32 4, i32* %a3, align [filtered], !dbg !72 %__child4 = getelementptr inbounds %grandchild, %grandchild* %grandchild1, i32 0, i32 0, !dbg !73 %b5 = getelementptr inbounds %child, %child* %__child4, i32 0, i32 1, !dbg !73 - store i32 5, i32* %b5, align 4, !dbg !73 + store i32 5, i32* %b5, align [filtered], !dbg !73 %c = getelementptr inbounds %grandchild, %grandchild* %grandchild1, i32 0, i32 1, !dbg !74 - store i32 6, i32* %c, align 4, !dbg !74 + store i32 6, i32* %c, align [filtered], !dbg !74 %tmpVar = getelementptr inbounds [3 x %parent], [3 x %parent]* %array_of_parent, i32 0, i32 0, !dbg !75 %a6 = getelementptr inbounds %parent, %parent* %tmpVar, i32 0, i32 1, !dbg !75 - store i32 7, i32* %a6, align 4, !dbg !75 + store i32 7, i32* %a6, align [filtered], !dbg !75 %tmpVar7 = getelementptr inbounds [3 x %child], [3 x %child]* %array_of_child, i32 0, i32 0, !dbg !76 %__parent8 = getelementptr inbounds %child, %child* %tmpVar7, i32 0, i32 0, !dbg !76 %a9 = getelementptr inbounds %parent, %parent* %__parent8, i32 0, i32 1, !dbg !76 - store i32 8, i32* %a9, align 4, !dbg !76 + store i32 8, i32* %a9, align [filtered], !dbg !76 %tmpVar10 = getelementptr inbounds [3 x %child], [3 x %child]* %array_of_child, i32 0, i32 0, !dbg !77 %b11 = getelementptr inbounds %child, %child* %tmpVar10, i32 0, i32 1, !dbg !77 - store i32 9, i32* %b11, align 4, !dbg !77 + store i32 9, i32* %b11, align [filtered], !dbg !77 %tmpVar12 = getelementptr inbounds [3 x %grandchild], [3 x %grandchild]* %array_of_grandchild, i32 0, i32 0, !dbg !78 %__child13 = getelementptr inbounds %grandchild, %grandchild* %tmpVar12, i32 0, i32 0, !dbg !78 %__parent14 = getelementptr inbounds %child, %child* %__child13, i32 0, i32 0, !dbg !78 %a15 = getelementptr inbounds %parent, %parent* %__parent14, i32 0, i32 1, !dbg !78 - store i32 10, i32* %a15, align 4, !dbg !78 + store i32 10, i32* %a15, align [filtered], !dbg !78 %tmpVar16 = getelementptr inbounds [3 x %grandchild], [3 x %grandchild]* %array_of_grandchild, i32 0, i32 0, !dbg !79 %__child17 = getelementptr inbounds %grandchild, %grandchild* %tmpVar16, i32 0, i32 0, !dbg !79 %b18 = getelementptr inbounds %child, %child* %__child17, i32 0, i32 1, !dbg !79 - store i32 11, i32* %b18, align 4, !dbg !79 + store i32 11, i32* %b18, align [filtered], !dbg !79 %tmpVar19 = getelementptr inbounds [3 x %grandchild], [3 x %grandchild]* %array_of_grandchild, i32 0, i32 0, !dbg !80 %c20 = getelementptr inbounds %grandchild, %grandchild* %tmpVar19, i32 0, i32 1, !dbg !80 - store i32 12, i32* %c20, align 4, !dbg !80 + store i32 12, i32* %c20, align [filtered], !dbg !80 %tmpVar21 = getelementptr inbounds [3 x %parent], [3 x %parent]* %array_of_parent, i32 0, i32 1, !dbg !81 %a22 = getelementptr inbounds %parent, %parent* %tmpVar21, i32 0, i32 1, !dbg !81 - store i32 13, i32* %a22, align 4, !dbg !81 + store i32 13, i32* %a22, align [filtered], !dbg !81 %tmpVar23 = getelementptr inbounds [3 x %child], [3 x %child]* %array_of_child, i32 0, i32 1, !dbg !82 %__parent24 = getelementptr inbounds %child, %child* %tmpVar23, i32 0, i32 0, !dbg !82 %a25 = getelementptr inbounds %parent, %parent* %__parent24, i32 0, i32 1, !dbg !82 - store i32 14, i32* %a25, align 4, !dbg !82 + store i32 14, i32* %a25, align [filtered], !dbg !82 %tmpVar26 = getelementptr inbounds [3 x %child], [3 x %child]* %array_of_child, i32 0, i32 1, !dbg !83 %b27 = getelementptr inbounds %child, %child* %tmpVar26, i32 0, i32 1, !dbg !83 - store i32 15, i32* %b27, align 4, !dbg !83 + store i32 15, i32* %b27, align [filtered], !dbg !83 %tmpVar28 = getelementptr inbounds [3 x %grandchild], [3 x %grandchild]* %array_of_grandchild, i32 0, i32 1, !dbg !84 %__child29 = getelementptr inbounds %grandchild, %grandchild* %tmpVar28, i32 0, i32 0, !dbg !84 %__parent30 = getelementptr inbounds %child, %child* %__child29, i32 0, i32 0, !dbg !84 %a31 = getelementptr inbounds %parent, %parent* %__parent30, i32 0, i32 1, !dbg !84 - store i32 16, i32* %a31, align 4, !dbg !84 + store i32 16, i32* %a31, align [filtered], !dbg !84 %tmpVar32 = getelementptr inbounds [3 x %grandchild], [3 x %grandchild]* %array_of_grandchild, i32 0, i32 1, !dbg !85 %__child33 = getelementptr inbounds %grandchild, %grandchild* %tmpVar32, i32 0, i32 0, !dbg !85 %b34 = getelementptr inbounds %child, %child* %__child33, i32 0, i32 1, !dbg !85 - store i32 17, i32* %b34, align 4, !dbg !85 + store i32 17, i32* %b34, align [filtered], !dbg !85 %tmpVar35 = getelementptr inbounds [3 x %grandchild], [3 x %grandchild]* %array_of_grandchild, i32 0, i32 1, !dbg !86 %c36 = getelementptr inbounds %grandchild, %grandchild* %tmpVar35, i32 0, i32 1, !dbg !86 - store i32 18, i32* %c36, align 4, !dbg !86 + store i32 18, i32* %c36, align [filtered], !dbg !86 %tmpVar37 = getelementptr inbounds [3 x %parent], [3 x %parent]* %array_of_parent, i32 0, i32 2, !dbg !87 %a38 = getelementptr inbounds %parent, %parent* %tmpVar37, i32 0, i32 1, !dbg !87 - store i32 19, i32* %a38, align 4, !dbg !87 + store i32 19, i32* %a38, align [filtered], !dbg !87 %tmpVar39 = getelementptr inbounds [3 x %child], [3 x %child]* %array_of_child, i32 0, i32 2, !dbg !88 %__parent40 = getelementptr inbounds %child, %child* %tmpVar39, i32 0, i32 0, !dbg !88 %a41 = getelementptr inbounds %parent, %parent* %__parent40, i32 0, i32 1, !dbg !88 - store i32 20, i32* %a41, align 4, !dbg !88 + store i32 20, i32* %a41, align [filtered], !dbg !88 %tmpVar42 = getelementptr inbounds [3 x %child], [3 x %child]* %array_of_child, i32 0, i32 2, !dbg !89 %b43 = getelementptr inbounds %child, %child* %tmpVar42, i32 0, i32 1, !dbg !89 - store i32 21, i32* %b43, align 4, !dbg !89 + store i32 21, i32* %b43, align [filtered], !dbg !89 %tmpVar44 = getelementptr inbounds [3 x %grandchild], [3 x %grandchild]* %array_of_grandchild, i32 0, i32 2, !dbg !90 %__child45 = getelementptr inbounds %grandchild, %grandchild* %tmpVar44, i32 0, i32 0, !dbg !90 %__parent46 = getelementptr inbounds %child, %child* %__child45, i32 0, i32 0, !dbg !90 %a47 = getelementptr inbounds %parent, %parent* %__parent46, i32 0, i32 1, !dbg !90 - store i32 22, i32* %a47, align 4, !dbg !90 + store i32 22, i32* %a47, align [filtered], !dbg !90 %tmpVar48 = getelementptr inbounds [3 x %grandchild], [3 x %grandchild]* %array_of_grandchild, i32 0, i32 2, !dbg !91 %__child49 = getelementptr inbounds %grandchild, %grandchild* %tmpVar48, i32 0, i32 0, !dbg !91 %b50 = getelementptr inbounds %child, %child* %__child49, i32 0, i32 1, !dbg !91 - store i32 23, i32* %b50, align 4, !dbg !91 + store i32 23, i32* %b50, align [filtered], !dbg !91 %tmpVar51 = getelementptr inbounds [3 x %grandchild], [3 x %grandchild]* %array_of_grandchild, i32 0, i32 2, !dbg !92 %c52 = getelementptr inbounds %grandchild, %grandchild* %tmpVar51, i32 0, i32 1, !dbg !92 - store i32 24, i32* %c52, align 4, !dbg !92 - %main_ret = load i32, i32* %main, align 4, !dbg !93 + store i32 24, i32* %c52, align [filtered], !dbg !92 + %main_ret = load i32, i32* %main, align [filtered], !dbg !93 ret i32 %main_ret, !dbg !93 } @@ -1803,106 +1803,106 @@ END_FUNCTION define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] ret void } define void @__init___vtable_grandchild(%__vtable_grandchild* %0) { entry: - %self = alloca %__vtable_grandchild*, align 8 - store %__vtable_grandchild* %0, %__vtable_grandchild** %self, align 8 - %deref = load %__vtable_grandchild*, %__vtable_grandchild** %self, align 8 + %self = alloca %__vtable_grandchild*, align [filtered] + store %__vtable_grandchild* %0, %__vtable_grandchild** %self, align [filtered] + %deref = load %__vtable_grandchild*, %__vtable_grandchild** %self, align [filtered] %__body = getelementptr inbounds %__vtable_grandchild, %__vtable_grandchild* %deref, i32 0, i32 0 - store void (%grandchild*)* @grandchild, void (%grandchild*)** %__body, align 8 + store void (%grandchild*)* @grandchild, void (%grandchild*)** %__body, align [filtered] ret void } define void @__init_grandchild(%grandchild* %0) { entry: - %self = alloca %grandchild*, align 8 - store %grandchild* %0, %grandchild** %self, align 8 - %deref = load %grandchild*, %grandchild** %self, align 8 + %self = alloca %grandchild*, align [filtered] + store %grandchild* %0, %grandchild** %self, align [filtered] + %deref = load %grandchild*, %grandchild** %self, align [filtered] %__child = getelementptr inbounds %grandchild, %grandchild* %deref, i32 0, i32 0 call void @__init_child(%child* %__child) - %deref1 = load %grandchild*, %grandchild** %self, align 8 + %deref1 = load %grandchild*, %grandchild** %self, align [filtered] %__child2 = getelementptr inbounds %grandchild, %grandchild* %deref1, i32 0, i32 0 %__parent = getelementptr inbounds %child, %child* %__child2, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 0 - store i32* bitcast (%__vtable_grandchild* @__vtable_grandchild_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_grandchild* @__vtable_grandchild_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } define void @__user_init___vtable_grandchild(%__vtable_grandchild* %0) { entry: - %self = alloca %__vtable_grandchild*, align 8 - store %__vtable_grandchild* %0, %__vtable_grandchild** %self, align 8 + %self = alloca %__vtable_grandchild*, align [filtered] + store %__vtable_grandchild* %0, %__vtable_grandchild** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -1910,9 +1910,9 @@ END_FUNCTION define void @__user_init_grandchild(%grandchild* %0) { entry: - %self = alloca %grandchild*, align 8 - store %grandchild* %0, %grandchild** %self, align 8 - %deref = load %grandchild*, %grandchild** %self, align 8 + %self = alloca %grandchild*, align [filtered] + store %grandchild* %0, %grandchild** %self, align [filtered] + %deref = load %grandchild*, %grandchild** %self, align [filtered] %__child = getelementptr inbounds %grandchild, %grandchild* %deref, i32 0, i32 0 call void @__user_init_child(%child* %__child) ret void diff --git a/src/codegen/tests/oop_tests/super_tests.rs b/src/codegen/tests/oop_tests/super_tests.rs index bc64fd44717..907898ddd00 100644 --- a/src/codegen/tests/oop_tests/super_tests.rs +++ b/src/codegen/tests/oop_tests/super_tests.rs @@ -38,8 +38,8 @@ fn super_keyword_basic_access() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %x = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 ret void @@ -47,77 +47,77 @@ fn super_keyword_basic_access() { define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %x = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - store i16 20, i16* %x, align 2 + store i16 20, i16* %x, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -125,8 +125,8 @@ fn super_keyword_basic_access() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } @@ -181,8 +181,8 @@ fn super_without_deref() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %x = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 ret void @@ -190,77 +190,77 @@ fn super_without_deref() { define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %p = getelementptr inbounds %child, %child* %0, i32 0, i32 1 - store %parent* %__parent, %parent** %p, align 8 + store %parent* %__parent, %parent** %p, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -268,8 +268,8 @@ fn super_without_deref() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } @@ -331,8 +331,8 @@ fn super_in_method_calls() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %value = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 ret void @@ -340,131 +340,131 @@ fn super_in_method_calls() { define i16 @parent__process(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %value = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 - %parent.process = alloca i16, align 2 - store i16 0, i16* %parent.process, align 2 - %load_value = load i16, i16* %value, align 2 + %parent.process = alloca i16, align [filtered] + store i16 0, i16* %parent.process, align [filtered] + %load_value = load i16, i16* %value, align [filtered] %1 = sext i16 %load_value to i32 %tmpVar = mul i32 %1, 2 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %parent.process, align 2 - %parent__process_ret = load i16, i16* %parent.process, align 2 + store i16 %2, i16* %parent.process, align [filtered] + %parent__process_ret = load i16, i16* %parent.process, align [filtered] ret i16 %parent__process_ret } define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 ret void } define i16 @child__process(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 - %child.process = alloca i16, align 2 - store i16 0, i16* %child.process, align 2 + %child.process = alloca i16, align [filtered] + store i16 0, i16* %child.process, align [filtered] %value = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - %load_value = load i16, i16* %value, align 2 + %load_value = load i16, i16* %value, align [filtered] %1 = sext i16 %load_value to i32 %tmpVar = add i32 %1, 5 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %child.process, align 2 - %child__process_ret = load i16, i16* %child.process, align 2 + store i16 %2, i16* %child.process, align [filtered] + %child__process_ret = load i16, i16* %child.process, align [filtered] ret i16 %child__process_ret } define i16 @child__test(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 - %child.test = alloca i16, align 2 - store i16 0, i16* %child.test, align 2 + %child.test = alloca i16, align [filtered] + store i16 0, i16* %child.test, align [filtered] %call = call i16 @parent__process(%parent* %__parent) - store i16 %call, i16* %child.test, align 2 - %child__test_ret = load i16, i16* %child.test, align 2 + store i16 %call, i16* %child.test, align [filtered] + %child__test_ret = load i16, i16* %child.test, align [filtered] ret i16 %child__test_ret } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 - %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] + %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %process = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref1, i32 0, i32 1 - store i16 (%parent*)* @parent__process, i16 (%parent*)** %process, align 8 + store i16 (%parent*)* @parent__process, i16 (%parent*)** %process, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 - %deref1 = load %__vtable_child*, %__vtable_child** %self, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] + %deref1 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %process = getelementptr inbounds %__vtable_child, %__vtable_child* %deref1, i32 0, i32 1 - store i16 (%child*)* @child__process, i16 (%child*)** %process, align 8 - %deref2 = load %__vtable_child*, %__vtable_child** %self, align 8 + store i16 (%child*)* @child__process, i16 (%child*)** %process, align [filtered] + %deref2 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %test = getelementptr inbounds %__vtable_child, %__vtable_child* %deref2, i32 0, i32 2 - store i16 (%child*)* @child__test, i16 (%child*)** %test, align 8 + store i16 (%child*)* @child__test, i16 (%child*)** %test, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -472,8 +472,8 @@ fn super_in_method_calls() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } @@ -529,8 +529,8 @@ fn super_in_complex_expressions() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %x = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %y = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 @@ -539,86 +539,86 @@ fn super_in_complex_expressions() { define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %z = getelementptr inbounds %child, %child* %0, i32 0, i32 1 %x = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - %load_x = load i16, i16* %x, align 2 + %load_x = load i16, i16* %x, align [filtered] %1 = sext i16 %load_x to i32 %y = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 - %load_y = load i16, i16* %y, align 2 + %load_y = load i16, i16* %y, align [filtered] %2 = sext i16 %load_y to i32 %tmpVar = mul i32 %2, 2 %tmpVar1 = add i32 %1, %tmpVar %3 = trunc i32 %tmpVar1 to i16 - store i16 %3, i16* %z, align 2 + store i16 %3, i16* %z, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -626,8 +626,8 @@ fn super_in_complex_expressions() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } @@ -683,8 +683,8 @@ fn super_with_array_access() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %arr = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 ret void @@ -692,83 +692,83 @@ fn super_with_array_access() { define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %index = getelementptr inbounds %child, %child* %0, i32 0, i32 1 %arr = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - %load_index = load i16, i16* %index, align 2 + %load_index = load i16, i16* %index, align [filtered] %1 = sext i16 %load_index to i32 %tmpVar = mul i32 1, %1 %tmpVar1 = add i32 %tmpVar, 0 %tmpVar2 = getelementptr inbounds [6 x i16], [6 x i16]* %arr, i32 0, i32 %tmpVar1 - store i16 42, i16* %tmpVar2, align 2 + store i16 42, i16* %tmpVar2, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -776,8 +776,8 @@ fn super_with_array_access() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } @@ -854,8 +854,8 @@ fn super_in_multi_level_inheritance() { define void @grandparent(%grandparent* %0) { entry: - %this = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %this, align 8 + %this = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %this, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 0 %g_val = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 1 ret void @@ -863,22 +863,22 @@ fn super_in_multi_level_inheritance() { define i16 @grandparent__gp_method(%grandparent* %0) { entry: - %this = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %this, align 8 + %this = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %this, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 0 %g_val = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 1 - %grandparent.gp_method = alloca i16, align 2 - store i16 0, i16* %grandparent.gp_method, align 2 - %load_g_val = load i16, i16* %g_val, align 2 - store i16 %load_g_val, i16* %grandparent.gp_method, align 2 - %grandparent__gp_method_ret = load i16, i16* %grandparent.gp_method, align 2 + %grandparent.gp_method = alloca i16, align [filtered] + store i16 0, i16* %grandparent.gp_method, align [filtered] + %load_g_val = load i16, i16* %g_val, align [filtered] + store i16 %load_g_val, i16* %grandparent.gp_method, align [filtered] + %grandparent__gp_method_ret = load i16, i16* %grandparent.gp_method, align [filtered] ret i16 %grandparent__gp_method_ret } define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %p_val = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 ret void @@ -886,27 +886,27 @@ fn super_in_multi_level_inheritance() { define i16 @parent__p_method(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %p_val = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 - %parent.p_method = alloca i16, align 2 - store i16 0, i16* %parent.p_method, align 2 - %load_p_val = load i16, i16* %p_val, align 2 + %parent.p_method = alloca i16, align [filtered] + store i16 0, i16* %parent.p_method, align [filtered] + %load_p_val = load i16, i16* %p_val, align [filtered] %1 = sext i16 %load_p_val to i32 %call = call i16 @grandparent__gp_method(%grandparent* %__grandparent) %2 = sext i16 %call to i32 %tmpVar = add i32 %1, %2 %3 = trunc i32 %tmpVar to i16 - store i16 %3, i16* %parent.p_method, align 2 - %parent__p_method_ret = load i16, i16* %parent.p_method, align 2 + store i16 %3, i16* %parent.p_method, align [filtered] + %parent__p_method_ret = load i16, i16* %parent.p_method, align [filtered] ret i16 %parent__p_method_ret } define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %c_val = getelementptr inbounds %child, %child* %0, i32 0, i32 1 ret void @@ -914,138 +914,138 @@ fn super_in_multi_level_inheritance() { define i16 @child__test(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %c_val = getelementptr inbounds %child, %child* %0, i32 0, i32 1 - %child.test = alloca i16, align 2 - store i16 0, i16* %child.test, align 2 + %child.test = alloca i16, align [filtered] + store i16 0, i16* %child.test, align [filtered] %call = call i16 @parent__p_method(%parent* %__parent) - store i16 %call, i16* %child.test, align 2 - %child__test_ret = load i16, i16* %child.test, align 2 + store i16 %call, i16* %child.test, align [filtered] + %child__test_ret = load i16, i16* %child.test, align [filtered] ret i16 %child__test_ret } define void @__init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 - %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] + %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_grandparent, %__vtable_grandparent* %deref, i32 0, i32 0 - store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align 8 - %deref1 = load %__vtable_grandparent*, %__vtable_grandparent** %self, align 8 + store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align [filtered] + %deref1 = load %__vtable_grandparent*, %__vtable_grandparent** %self, align [filtered] %gp_method = getelementptr inbounds %__vtable_grandparent, %__vtable_grandparent* %deref1, i32 0, i32 1 - store i16 (%grandparent*)* @grandparent__gp_method, i16 (%grandparent*)** %gp_method, align 8 + store i16 (%grandparent*)* @grandparent__gp_method, i16 (%grandparent*)** %gp_method, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 - %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] + %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %gp_method = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref1, i32 0, i32 1 - store i16 (%grandparent*)* @grandparent__gp_method, i16 (%grandparent*)** %gp_method, align 8 - %deref2 = load %__vtable_parent*, %__vtable_parent** %self, align 8 + store i16 (%grandparent*)* @grandparent__gp_method, i16 (%grandparent*)** %gp_method, align [filtered] + %deref2 = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %p_method = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref2, i32 0, i32 2 - store i16 (%parent*)* @parent__p_method, i16 (%parent*)** %p_method, align 8 + store i16 (%parent*)* @parent__p_method, i16 (%parent*)** %p_method, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 - %deref1 = load %__vtable_child*, %__vtable_child** %self, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] + %deref1 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %gp_method = getelementptr inbounds %__vtable_child, %__vtable_child* %deref1, i32 0, i32 1 - store i16 (%grandparent*)* @grandparent__gp_method, i16 (%grandparent*)** %gp_method, align 8 - %deref2 = load %__vtable_child*, %__vtable_child** %self, align 8 + store i16 (%grandparent*)* @grandparent__gp_method, i16 (%grandparent*)** %gp_method, align [filtered] + %deref2 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %p_method = getelementptr inbounds %__vtable_child, %__vtable_child* %deref2, i32 0, i32 2 - store i16 (%parent*)* @parent__p_method, i16 (%parent*)** %p_method, align 8 - %deref3 = load %__vtable_child*, %__vtable_child** %self, align 8 + store i16 (%parent*)* @parent__p_method, i16 (%parent*)** %p_method, align [filtered] + %deref3 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %test = getelementptr inbounds %__vtable_child, %__vtable_child* %deref3, i32 0, i32 3 - store i16 (%child*)* @child__test, i16 (%child*)** %test, align 8 + store i16 (%child*)* @child__test, i16 (%child*)** %test, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__init_grandparent(%grandparent* %__grandparent) - %deref1 = load %parent*, %parent** %self, align 8 + %deref1 = load %parent*, %parent** %self, align [filtered] %__grandparent2 = getelementptr inbounds %parent, %parent* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent2, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 - %deref = load %grandparent*, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] + %deref = load %grandparent*, %grandparent** %self, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__grandparent = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } define void @__user_init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -1053,9 +1053,9 @@ fn super_in_multi_level_inheritance() { define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__user_init_grandparent(%grandparent* %__grandparent) ret void @@ -1114,8 +1114,8 @@ fn super_with_pointer_operations() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %val = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %ptr = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 @@ -1124,86 +1124,86 @@ fn super_with_pointer_operations() { define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %ptr = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 %val = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - store i16* %val, i16** %ptr, align 8 + store i16* %val, i16** %ptr, align [filtered] %val1 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 %ptr2 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 - %deref = load i16*, i16** %ptr2, align 8 - %load_tmpVar = load i16, i16* %deref, align 2 + %deref = load i16*, i16** %ptr2, align [filtered] + %load_tmpVar = load i16, i16* %deref, align [filtered] %1 = sext i16 %load_tmpVar to i32 %tmpVar = add i32 %1, 5 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %val1, align 2 + store i16 %2, i16* %val1, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -1211,8 +1211,8 @@ fn super_with_pointer_operations() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } @@ -1277,8 +1277,8 @@ fn super_in_conditionals() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %threshold = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %value = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 @@ -1287,22 +1287,22 @@ fn super_in_conditionals() { define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 ret void } define void @child__test(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %value = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 - %load_value = load i16, i16* %value, align 2 + %load_value = load i16, i16* %value, align [filtered] %1 = sext i16 %load_value to i32 %threshold = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - %load_threshold = load i16, i16* %threshold, align 2 + %load_threshold = load i16, i16* %threshold, align [filtered] %2 = sext i16 %load_threshold to i32 %tmpVar = icmp sgt i32 %1, %2 %3 = zext i1 %tmpVar to i8 @@ -1311,17 +1311,17 @@ fn super_in_conditionals() { condition_body: ; preds = %entry %value1 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 - store i16 0, i16* %value1, align 2 + store i16 0, i16* %value1, align [filtered] br label %continue else: ; preds = %entry %value2 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 - store i16 100, i16* %value2, align 2 + store i16 100, i16* %value2, align [filtered] br label %continue continue: ; preds = %else, %condition_body %value4 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 - %load_value5 = load i16, i16* %value4, align 2 + %load_value5 = load i16, i16* %value4, align [filtered] switch i16 %load_value5, label %else6 [ i16 10, label %case i16 20, label %case8 @@ -1329,12 +1329,12 @@ fn super_in_conditionals() { case: ; preds = %continue %threshold7 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - store i16 40, i16* %threshold7, align 2 + store i16 40, i16* %threshold7, align [filtered] br label %continue3 case8: ; preds = %continue %threshold9 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - store i16 60, i16* %threshold9, align 2 + store i16 60, i16* %threshold9, align [filtered] br label %continue3 else6: ; preds = %continue @@ -1346,70 +1346,70 @@ fn super_in_conditionals() { define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 - %deref1 = load %__vtable_child*, %__vtable_child** %self, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] + %deref1 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %test = getelementptr inbounds %__vtable_child, %__vtable_child* %deref1, i32 0, i32 1 - store void (%child*)* @child__test, void (%child*)** %test, align 8 + store void (%child*)* @child__test, void (%child*)** %test, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -1417,8 +1417,8 @@ fn super_in_conditionals() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } @@ -1473,8 +1473,8 @@ fn super_with_const_variables() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %MAX_VALUE = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %current = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 @@ -1483,77 +1483,77 @@ fn super_with_const_variables() { define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %current = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 - store i16 50, i16* %current, align 2 + store i16 50, i16* %current, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -1561,8 +1561,8 @@ fn super_with_const_variables() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } @@ -1631,8 +1631,8 @@ fn super_as_function_parameter() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %val = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 ret void @@ -1640,16 +1640,16 @@ fn super_as_function_parameter() { define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 ret void } define void @child__test(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %call = call i16 @process_ref(%parent* %__parent) %call1 = call i16 @process_val(%parent* %__parent) @@ -1658,28 +1658,28 @@ fn super_as_function_parameter() { define i16 @process_ref(%parent* %0) { entry: - %process_ref = alloca i16, align 2 - %ref = alloca %parent*, align 8 - store %parent* %0, %parent** %ref, align 8 - store i16 0, i16* %process_ref, align 2 - %deref = load %parent*, %parent** %ref, align 8 + %process_ref = alloca i16, align [filtered] + %ref = alloca %parent*, align [filtered] + store %parent* %0, %parent** %ref, align [filtered] + store i16 0, i16* %process_ref, align [filtered] + %deref = load %parent*, %parent** %ref, align [filtered] %val = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 1 - store i16 20, i16* %val, align 2 - %process_ref_ret = load i16, i16* %process_ref, align 2 + store i16 20, i16* %val, align [filtered] + %process_ref_ret = load i16, i16* %process_ref, align [filtered] ret i16 %process_ref_ret } define i16 @process_val(%parent* %0) { entry: - %process_val = alloca i16, align 2 - %val = alloca %parent, align 8 + %process_val = alloca i16, align [filtered] + %val = alloca %parent, align [filtered] %1 = bitcast %parent* %val to i8* %2 = bitcast %parent* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%parent* getelementptr (%parent, %parent* null, i32 1) to i64), i1 false) - store i16 0, i16* %process_val, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%parent* getelementptr (%parent, %parent* null, i32 1) to i64), i1 false) + store i16 0, i16* %process_val, align [filtered] %val1 = getelementptr inbounds %parent, %parent* %val, i32 0, i32 1 - store i16 30, i16* %val1, align 2 - %process_val_ret = load i16, i16* %process_val, align 2 + store i16 30, i16* %val1, align [filtered] + %process_val_ret = load i16, i16* %process_val, align [filtered] ret i16 %process_val_ret } @@ -1688,70 +1688,70 @@ fn super_as_function_parameter() { define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 - %deref1 = load %__vtable_child*, %__vtable_child** %self, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] + %deref1 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %test = getelementptr inbounds %__vtable_child, %__vtable_child* %deref1, i32 0, i32 1 - store void (%child*)* @child__test, void (%child*)** %test, align 8 + store void (%child*)* @child__test, void (%child*)** %test, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -1759,8 +1759,8 @@ fn super_as_function_parameter() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } @@ -1822,8 +1822,8 @@ fn super_with_deeply_nested_expressions() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %a = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %b = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 @@ -1833,140 +1833,140 @@ fn super_with_deeply_nested_expressions() { define i16 @parent__calc(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %a = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %b = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 %c = getelementptr inbounds %parent, %parent* %0, i32 0, i32 3 - %parent.calc = alloca i16, align 2 - store i16 0, i16* %parent.calc, align 2 - %load_a = load i16, i16* %a, align 2 + %parent.calc = alloca i16, align [filtered] + store i16 0, i16* %parent.calc, align [filtered] + %load_a = load i16, i16* %a, align [filtered] %1 = sext i16 %load_a to i32 - %load_b = load i16, i16* %b, align 2 + %load_b = load i16, i16* %b, align [filtered] %2 = sext i16 %load_b to i32 - %load_c = load i16, i16* %c, align 2 + %load_c = load i16, i16* %c, align [filtered] %3 = sext i16 %load_c to i32 %tmpVar = mul i32 %2, %3 %tmpVar1 = add i32 %1, %tmpVar %4 = trunc i32 %tmpVar1 to i16 - store i16 %4, i16* %parent.calc, align 2 - %parent__calc_ret = load i16, i16* %parent.calc, align 2 + store i16 %4, i16* %parent.calc, align [filtered] + %parent__calc_ret = load i16, i16* %parent.calc, align [filtered] ret i16 %parent__calc_ret } define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 ret void } define i16 @child__test(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 - %child.test = alloca i16, align 2 - store i16 0, i16* %child.test, align 2 + %child.test = alloca i16, align [filtered] + store i16 0, i16* %child.test, align [filtered] %a = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - %load_a = load i16, i16* %a, align 2 + %load_a = load i16, i16* %a, align [filtered] %1 = sext i16 %load_a to i32 %b = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 - %load_b = load i16, i16* %b, align 2 + %load_b = load i16, i16* %b, align [filtered] %2 = sext i16 %load_b to i32 %tmpVar = add i32 %1, %2 %c = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 3 - %load_c = load i16, i16* %c, align 2 + %load_c = load i16, i16* %c, align [filtered] %3 = sext i16 %load_c to i32 %tmpVar1 = mul i32 %tmpVar, %3 %call = call i16 @parent__calc(%parent* %__parent) %4 = sext i16 %call to i32 %tmpVar2 = add i32 %tmpVar1, %4 %a3 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - %load_a4 = load i16, i16* %a3, align 2 + %load_a4 = load i16, i16* %a3, align [filtered] %5 = sext i16 %load_a4 to i32 %tmpVar5 = add i32 %5, 1 %tmpVar6 = sdiv i32 %tmpVar2, %tmpVar5 %6 = trunc i32 %tmpVar6 to i16 - store i16 %6, i16* %child.test, align 2 - %child__test_ret = load i16, i16* %child.test, align 2 + store i16 %6, i16* %child.test, align [filtered] + %child__test_ret = load i16, i16* %child.test, align [filtered] ret i16 %child__test_ret } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 - %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] + %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %calc = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref1, i32 0, i32 1 - store i16 (%parent*)* @parent__calc, i16 (%parent*)** %calc, align 8 + store i16 (%parent*)* @parent__calc, i16 (%parent*)** %calc, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 - %deref1 = load %__vtable_child*, %__vtable_child** %self, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] + %deref1 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %calc = getelementptr inbounds %__vtable_child, %__vtable_child* %deref1, i32 0, i32 1 - store i16 (%parent*)* @parent__calc, i16 (%parent*)** %calc, align 8 - %deref2 = load %__vtable_child*, %__vtable_child** %self, align 8 + store i16 (%parent*)* @parent__calc, i16 (%parent*)** %calc, align [filtered] + %deref2 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %test = getelementptr inbounds %__vtable_child, %__vtable_child* %deref2, i32 0, i32 2 - store i16 (%child*)* @child__test, i16 (%child*)** %test, align 8 + store i16 (%child*)* @child__test, i16 (%child*)** %test, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -1974,8 +1974,8 @@ fn super_with_deeply_nested_expressions() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } @@ -2054,8 +2054,8 @@ fn super_in_loop_constructs() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %counter = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %arr = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 @@ -2064,74 +2064,74 @@ fn super_in_loop_constructs() { define void @parent__increment(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %counter = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %arr = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 - %load_counter = load i16, i16* %counter, align 2 + %load_counter = load i16, i16* %counter, align [filtered] %1 = sext i16 %load_counter to i32 %tmpVar = add i32 %1, 1 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %counter, align 2 + store i16 %2, i16* %counter, align [filtered] ret void } define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 ret void } define void @child__process(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 - %i = alloca i16, align 2 - %sum = alloca i16, align 2 - store i16 0, i16* %i, align 2 - store i16 0, i16* %sum, align 2 - store i16 0, i16* %i, align 2 + %i = alloca i16, align [filtered] + %sum = alloca i16, align [filtered] + store i16 0, i16* %i, align [filtered] + store i16 0, i16* %sum, align [filtered] + store i16 0, i16* %i, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %1 = load i16, i16* %i, align 2 + %1 = load i16, i16* %i, align [filtered] %2 = sext i16 %1 to i32 %condition = icmp sle i32 %2, 5 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %3 = load i16, i16* %i, align 2 + %3 = load i16, i16* %i, align [filtered] %4 = sext i16 %3 to i32 %condition1 = icmp sge i32 %4, 5 br i1 %condition1, label %loop, label %continue loop: ; preds = %predicate_sge, %predicate_sle - %load_sum = load i16, i16* %sum, align 2 + %load_sum = load i16, i16* %sum, align [filtered] %5 = sext i16 %load_sum to i32 %arr = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 - %load_i = load i16, i16* %i, align 2 + %load_i = load i16, i16* %i, align [filtered] %6 = sext i16 %load_i to i32 %tmpVar = mul i32 1, %6 %tmpVar2 = add i32 %tmpVar, 0 %tmpVar3 = getelementptr inbounds [6 x i16], [6 x i16]* %arr, i32 0, i32 %tmpVar2 - %load_tmpVar = load i16, i16* %tmpVar3, align 2 + %load_tmpVar = load i16, i16* %tmpVar3, align [filtered] %7 = sext i16 %load_tmpVar to i32 %tmpVar4 = add i32 %5, %7 %8 = trunc i32 %tmpVar4 to i16 - store i16 %8, i16* %sum, align 2 + store i16 %8, i16* %sum, align [filtered] call void @parent__increment(%parent* %__parent) br label %increment increment: ; preds = %loop - %9 = load i16, i16* %i, align 2 + %9 = load i16, i16* %i, align [filtered] %10 = sext i16 %9 to i32 %next = add i32 1, %10 %11 = trunc i32 %next to i16 - store i16 %11, i16* %i, align 2 + store i16 %11, i16* %i, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge continue: ; preds = %predicate_sge, %predicate_sle @@ -2142,7 +2142,7 @@ fn super_in_loop_constructs() { while_body: ; preds = %condition_check %counter = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - %load_counter = load i16, i16* %counter, align 2 + %load_counter = load i16, i16* %counter, align [filtered] %12 = sext i16 %load_counter to i32 %tmpVar7 = icmp slt i32 %12, 10 %13 = zext i1 %tmpVar7 to i8 @@ -2169,13 +2169,13 @@ fn super_in_loop_constructs() { while_body10: ; preds = %condition_check9 %counter12 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 %counter13 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - %load_counter14 = load i16, i16* %counter13, align 2 + %load_counter14 = load i16, i16* %counter13, align [filtered] %15 = sext i16 %load_counter14 to i32 %tmpVar15 = sub i32 %15, 1 %16 = trunc i32 %tmpVar15 to i16 - store i16 %16, i16* %counter12, align 2 + store i16 %16, i16* %counter12, align [filtered] %counter17 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - %load_counter18 = load i16, i16* %counter17, align 2 + %load_counter18 = load i16, i16* %counter17, align [filtered] %17 = sext i16 %load_counter18 to i32 %tmpVar19 = icmp sle i32 %17, 0 %18 = zext i1 %tmpVar19 to i8 @@ -2197,76 +2197,76 @@ fn super_in_loop_constructs() { define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 - %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] + %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %increment = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref1, i32 0, i32 1 - store void (%parent*)* @parent__increment, void (%parent*)** %increment, align 8 + store void (%parent*)* @parent__increment, void (%parent*)** %increment, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 - %deref1 = load %__vtable_child*, %__vtable_child** %self, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] + %deref1 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %increment = getelementptr inbounds %__vtable_child, %__vtable_child* %deref1, i32 0, i32 1 - store void (%parent*)* @parent__increment, void (%parent*)** %increment, align 8 - %deref2 = load %__vtable_child*, %__vtable_child** %self, align 8 + store void (%parent*)* @parent__increment, void (%parent*)** %increment, align [filtered] + %deref2 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %process = getelementptr inbounds %__vtable_child, %__vtable_child* %deref2, i32 0, i32 2 - store void (%child*)* @child__process, void (%child*)** %process, align 8 + store void (%child*)* @child__process, void (%child*)** %process, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -2274,8 +2274,8 @@ fn super_in_loop_constructs() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } @@ -2341,183 +2341,183 @@ fn super_with_method_overrides_in_three_levels() { define void @grandparent(%grandparent* %0) { entry: - %this = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %this, align 8 + %this = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %this, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 0 ret void } define i16 @grandparent__calculate(%grandparent* %0) { entry: - %this = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %this, align 8 + %this = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %this, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %0, i32 0, i32 0 - %grandparent.calculate = alloca i16, align 2 - store i16 0, i16* %grandparent.calculate, align 2 - store i16 100, i16* %grandparent.calculate, align 2 - %grandparent__calculate_ret = load i16, i16* %grandparent.calculate, align 2 + %grandparent.calculate = alloca i16, align [filtered] + store i16 0, i16* %grandparent.calculate, align [filtered] + store i16 100, i16* %grandparent.calculate, align [filtered] + %grandparent__calculate_ret = load i16, i16* %grandparent.calculate, align [filtered] ret i16 %grandparent__calculate_ret } define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 ret void } define i16 @parent__calculate(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 - %parent.calculate = alloca i16, align 2 - store i16 0, i16* %parent.calculate, align 2 + %parent.calculate = alloca i16, align [filtered] + store i16 0, i16* %parent.calculate, align [filtered] %call = call i16 @grandparent__calculate(%grandparent* %__grandparent) %1 = sext i16 %call to i32 %tmpVar = add i32 %1, 50 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %parent.calculate, align 2 - %parent__calculate_ret = load i16, i16* %parent.calculate, align 2 + store i16 %2, i16* %parent.calculate, align [filtered] + %parent__calculate_ret = load i16, i16* %parent.calculate, align [filtered] ret i16 %parent__calculate_ret } define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 ret void } define i16 @child__calculate(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 - %child.calculate = alloca i16, align 2 - store i16 0, i16* %child.calculate, align 2 + %child.calculate = alloca i16, align [filtered] + store i16 0, i16* %child.calculate, align [filtered] %call = call i16 @parent__calculate(%parent* %__parent) %1 = sext i16 %call to i32 %tmpVar = add i32 %1, 25 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %child.calculate, align 2 - %child__calculate_ret = load i16, i16* %child.calculate, align 2 + store i16 %2, i16* %child.calculate, align [filtered] + %child__calculate_ret = load i16, i16* %child.calculate, align [filtered] ret i16 %child__calculate_ret } define void @__init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 - %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] + %deref = load %__vtable_grandparent*, %__vtable_grandparent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_grandparent, %__vtable_grandparent* %deref, i32 0, i32 0 - store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align 8 - %deref1 = load %__vtable_grandparent*, %__vtable_grandparent** %self, align 8 + store void (%grandparent*)* @grandparent, void (%grandparent*)** %__body, align [filtered] + %deref1 = load %__vtable_grandparent*, %__vtable_grandparent** %self, align [filtered] %calculate = getelementptr inbounds %__vtable_grandparent, %__vtable_grandparent* %deref1, i32 0, i32 1 - store i16 (%grandparent*)* @grandparent__calculate, i16 (%grandparent*)** %calculate, align 8 + store i16 (%grandparent*)* @grandparent__calculate, i16 (%grandparent*)** %calculate, align [filtered] ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 - %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] + %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %calculate = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref1, i32 0, i32 1 - store i16 (%parent*)* @parent__calculate, i16 (%parent*)** %calculate, align 8 + store i16 (%parent*)* @parent__calculate, i16 (%parent*)** %calculate, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 - %deref1 = load %__vtable_child*, %__vtable_child** %self, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] + %deref1 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %calculate = getelementptr inbounds %__vtable_child, %__vtable_child* %deref1, i32 0, i32 1 - store i16 (%child*)* @child__calculate, i16 (%child*)** %calculate, align 8 + store i16 (%child*)* @child__calculate, i16 (%child*)** %calculate, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__init_grandparent(%grandparent* %__grandparent) - %deref1 = load %parent*, %parent** %self, align 8 + %deref1 = load %parent*, %parent** %self, align [filtered] %__grandparent2 = getelementptr inbounds %parent, %parent* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent2, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 - %deref = load %grandparent*, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] + %deref = load %grandparent*, %grandparent** %self, align [filtered] %__vtable = getelementptr inbounds %grandparent, %grandparent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_grandparent* @__vtable_grandparent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__grandparent = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 %__vtable = getelementptr inbounds %grandparent, %grandparent* %__grandparent, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } define void @__user_init_grandparent(%grandparent* %0) { entry: - %self = alloca %grandparent*, align 8 - store %grandparent* %0, %grandparent** %self, align 8 + %self = alloca %grandparent*, align [filtered] + store %grandparent* %0, %grandparent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init___vtable_grandparent(%__vtable_grandparent* %0) { entry: - %self = alloca %__vtable_grandparent*, align 8 - store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align 8 + %self = alloca %__vtable_grandparent*, align [filtered] + store %__vtable_grandparent* %0, %__vtable_grandparent** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -2525,9 +2525,9 @@ fn super_with_method_overrides_in_three_levels() { define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__grandparent = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 call void @__user_init_grandparent(%grandparent* %__grandparent) ret void @@ -2650,8 +2650,8 @@ fn super_with_structured_types() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %data = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 %arr_data = getelementptr inbounds %parent, %parent* %0, i32 0, i32 2 @@ -2660,52 +2660,52 @@ fn super_with_structured_types() { define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 ret void } define void @child__test(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 - %local_data = alloca %Complex_Type, align 8 + %local_data = alloca %Complex_Type, align [filtered] %1 = bitcast %Complex_Type* %local_data to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 bitcast (%Complex_Type* @__Complex_Type__init to i8*), i64 ptrtoint (%Complex_Type* getelementptr (%Complex_Type, %Complex_Type* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] bitcast (%Complex_Type* @__Complex_Type__init to i8*), i64 ptrtoint (%Complex_Type* getelementptr (%Complex_Type, %Complex_Type* null, i32 1) to i64), i1 false) call void @__init_complex_type(%Complex_Type* %local_data) call void @__user_init_Complex_Type(%Complex_Type* %local_data) %x = getelementptr inbounds %Complex_Type, %Complex_Type* %local_data, i32 0, i32 0 %data = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 %x1 = getelementptr inbounds %Complex_Type, %Complex_Type* %data, i32 0, i32 0 - %load_x = load i16, i16* %x1, align 2 - store i16 %load_x, i16* %x, align 2 + %load_x = load i16, i16* %x1, align [filtered] + store i16 %load_x, i16* %x, align [filtered] %y = getelementptr inbounds %Complex_Type, %Complex_Type* %local_data, i32 0, i32 1 %data2 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 %y3 = getelementptr inbounds %Complex_Type, %Complex_Type* %data2, i32 0, i32 1 - %load_y = load i16, i16* %y3, align 2 - store i16 %load_y, i16* %y, align 2 + %load_y = load i16, i16* %y3, align [filtered] + store i16 %load_y, i16* %y, align [filtered] %z = getelementptr inbounds %Complex_Type, %Complex_Type* %local_data, i32 0, i32 2 %data4 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 %z5 = getelementptr inbounds %Complex_Type, %Complex_Type* %data4, i32 0, i32 2 - %load_z = load float, float* %z5, align 4 - store float %load_z, float* %z, align 4 + %load_z = load float, float* %z5, align [filtered] + store float %load_z, float* %z, align [filtered] %arr_data = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 %tmpVar = getelementptr inbounds [2 x %Complex_Type], [2 x %Complex_Type]* %arr_data, i32 0, i32 0 %x6 = getelementptr inbounds %Complex_Type, %Complex_Type* %tmpVar, i32 0, i32 0 %arr_data7 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 %tmpVar8 = getelementptr inbounds [2 x %Complex_Type], [2 x %Complex_Type]* %arr_data7, i32 0, i32 1 %x9 = getelementptr inbounds %Complex_Type, %Complex_Type* %tmpVar8, i32 0, i32 0 - %load_x10 = load i16, i16* %x9, align 2 - store i16 %load_x10, i16* %x6, align 2 + %load_x10 = load i16, i16* %x9, align [filtered] + store i16 %load_x10, i16* %x6, align [filtered] %arr_data11 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 2 %tmpVar12 = getelementptr inbounds [2 x %Complex_Type], [2 x %Complex_Type]* %arr_data11, i32 0, i32 0 %z13 = getelementptr inbounds %Complex_Type, %Complex_Type* %tmpVar12, i32 0, i32 2 %data14 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 %z15 = getelementptr inbounds %Complex_Type, %Complex_Type* %data14, i32 0, i32 2 - %load_z16 = load float, float* %z15, align 4 - store float %load_z16, float* %z13, align 4 + %load_z16 = load float, float* %z15, align [filtered] + store float %load_z16, float* %z13, align [filtered] ret void } @@ -2714,87 +2714,87 @@ fn super_with_structured_types() { define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 - %deref1 = load %__vtable_child*, %__vtable_child** %self, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] + %deref1 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %test = getelementptr inbounds %__vtable_child, %__vtable_child* %deref1, i32 0, i32 1 - store void (%child*)* @child__test, void (%child*)** %test, align 8 + store void (%child*)* @child__test, void (%child*)** %test, align [filtered] ret void } define void @__init_complex_type(%Complex_Type* %0) { entry: - %self = alloca %Complex_Type*, align 8 - store %Complex_Type* %0, %Complex_Type** %self, align 8 + %self = alloca %Complex_Type*, align [filtered] + store %Complex_Type* %0, %Complex_Type** %self, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %data = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 1 call void @__init_complex_type(%Complex_Type* %data) - %deref1 = load %parent*, %parent** %self, align 8 + %deref1 = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref1, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_Complex_Type(%Complex_Type* %0) { entry: - %self = alloca %Complex_Type*, align 8 - store %Complex_Type* %0, %Complex_Type** %self, align 8 + %self = alloca %Complex_Type*, align [filtered] + store %Complex_Type* %0, %Complex_Type** %self, align [filtered] ret void } define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -2802,9 +2802,9 @@ fn super_with_structured_types() { define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %data = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 1 call void @__user_init_Complex_Type(%Complex_Type* %data) ret void @@ -2868,8 +2868,8 @@ fn super_in_action_blocks() { define void @parent(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %value = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 ret void @@ -2877,111 +2877,111 @@ fn super_in_action_blocks() { define void @parent__increment(%parent* %0) { entry: - %this = alloca %parent*, align 8 - store %parent* %0, %parent** %this, align 8 + %this = alloca %parent*, align [filtered] + store %parent* %0, %parent** %this, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %0, i32 0, i32 0 %value = getelementptr inbounds %parent, %parent* %0, i32 0, i32 1 - %load_value = load i16, i16* %value, align 2 + %load_value = load i16, i16* %value, align [filtered] %1 = sext i16 %load_value to i32 %tmpVar = add i32 %1, 1 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %value, align 2 + store i16 %2, i16* %value, align [filtered] ret void } define void @child(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 ret void } define void @child__increase(%child* %0) { entry: - %this = alloca %child*, align 8 - store %child* %0, %child** %this, align 8 + %this = alloca %child*, align [filtered] + store %child* %0, %child** %this, align [filtered] %__parent = getelementptr inbounds %child, %child* %0, i32 0, i32 0 %value = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 %value1 = getelementptr inbounds %parent, %parent* %__parent, i32 0, i32 1 - %load_value = load i16, i16* %value1, align 2 + %load_value = load i16, i16* %value1, align [filtered] %1 = sext i16 %load_value to i32 %tmpVar = add i32 %1, 5 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %value, align 2 + store i16 %2, i16* %value, align [filtered] call void @parent__increment(%parent* %__parent) ret void } define void @__init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 - %deref = load %__vtable_parent*, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] + %deref = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %__body = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref, i32 0, i32 0 - store void (%parent*)* @parent, void (%parent*)** %__body, align 8 - %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align 8 + store void (%parent*)* @parent, void (%parent*)** %__body, align [filtered] + %deref1 = load %__vtable_parent*, %__vtable_parent** %self, align [filtered] %increment = getelementptr inbounds %__vtable_parent, %__vtable_parent* %deref1, i32 0, i32 1 - store void (%parent*)* @parent__increment, void (%parent*)** %increment, align 8 + store void (%parent*)* @parent__increment, void (%parent*)** %increment, align [filtered] ret void } define void @__init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 - %deref = load %__vtable_child*, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] + %deref = load %__vtable_child*, %__vtable_child** %self, align [filtered] %__body = getelementptr inbounds %__vtable_child, %__vtable_child* %deref, i32 0, i32 0 - store void (%child*)* @child, void (%child*)** %__body, align 8 - %deref1 = load %__vtable_child*, %__vtable_child** %self, align 8 + store void (%child*)* @child, void (%child*)** %__body, align [filtered] + %deref1 = load %__vtable_child*, %__vtable_child** %self, align [filtered] %increment = getelementptr inbounds %__vtable_child, %__vtable_child* %deref1, i32 0, i32 1 - store void (%parent*)* @parent__increment, void (%parent*)** %increment, align 8 + store void (%parent*)* @parent__increment, void (%parent*)** %increment, align [filtered] ret void } define void @__init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 - %deref = load %parent*, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] + %deref = load %parent*, %parent** %self, align [filtered] %__vtable = getelementptr inbounds %parent, %parent* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_parent* @__vtable_parent_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__init_parent(%parent* %__parent) - %deref1 = load %child*, %child** %self, align 8 + %deref1 = load %child*, %child** %self, align [filtered] %__parent2 = getelementptr inbounds %child, %child* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %parent, %parent* %__parent2, i32 0, i32 0 - store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_child* @__vtable_child_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_parent(%parent* %0) { entry: - %self = alloca %parent*, align 8 - store %parent* %0, %parent** %self, align 8 + %self = alloca %parent*, align [filtered] + store %parent* %0, %parent** %self, align [filtered] ret void } define void @__user_init___vtable_child(%__vtable_child* %0) { entry: - %self = alloca %__vtable_child*, align 8 - store %__vtable_child* %0, %__vtable_child** %self, align 8 + %self = alloca %__vtable_child*, align [filtered] + store %__vtable_child* %0, %__vtable_child** %self, align [filtered] ret void } define void @__user_init_child(%child* %0) { entry: - %self = alloca %child*, align 8 - store %child* %0, %child** %self, align 8 - %deref = load %child*, %child** %self, align 8 + %self = alloca %child*, align [filtered] + store %child* %0, %child** %self, align [filtered] + %deref = load %child*, %child** %self, align [filtered] %__parent = getelementptr inbounds %child, %child* %deref, i32 0, i32 0 call void @__user_init_parent(%parent* %__parent) ret void @@ -2989,8 +2989,8 @@ fn super_in_action_blocks() { define void @__user_init___vtable_parent(%__vtable_parent* %0) { entry: - %self = alloca %__vtable_parent*, align 8 - store %__vtable_parent* %0, %__vtable_parent** %self, align 8 + %self = alloca %__vtable_parent*, align [filtered] + store %__vtable_parent* %0, %__vtable_parent** %self, align [filtered] ret void } diff --git a/src/codegen/tests/parameters_tests.rs b/src/codegen/tests/parameters_tests.rs index b2639216a09..605211a489f 100644 --- a/src/codegen/tests/parameters_tests.rs +++ b/src/codegen/tests/parameters_tests.rs @@ -715,26 +715,26 @@ fn by_value_function_arg_builtin_type_strings_are_memcopied() { define i32 @main() { entry: - %main = alloca i32, align 4 - %str = alloca [81 x i8], align 1 + %main = alloca i32, align [filtered] + %str = alloca [81 x i8], align [filtered] %0 = bitcast [81 x i8]* %str to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] %1 = bitcast [81 x i8]* %str to i8* %call = call i32 @foo(i8* %1) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } define i32 @foo(i8* %0) { entry: - %foo = alloca i32, align 4 - %val = alloca [81 x i8], align 1 + %foo = alloca i32, align [filtered] + %val = alloca [81 x i8], align [filtered] %bitcast = bitcast [81 x i8]* %val to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 81, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 80, i1 false) - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 81, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 80, i1 false) + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -776,26 +776,26 @@ fn by_value_function_arg_user_type_strings_are_memcopied() { define i32 @main() { entry: - %main = alloca i32, align 4 - %str = alloca [65537 x i8], align 1 + %main = alloca i32, align [filtered] + %str = alloca [65537 x i8], align [filtered] %0 = bitcast [65537 x i8]* %str to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([65537 x i8]* getelementptr ([65537 x i8], [65537 x i8]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([65537 x i8]* getelementptr ([65537 x i8], [65537 x i8]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] %1 = bitcast [65537 x i8]* %str to i8* %call = call i32 @foo(i8* %1) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } define i32 @foo(i8* %0) { entry: - %foo = alloca i32, align 4 - %val = alloca [65537 x i8], align 1 + %foo = alloca i32, align [filtered] + %val = alloca [65537 x i8], align [filtered] %bitcast = bitcast [65537 x i8]* %val to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 65537, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 65536, i1 false) - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 65537, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 65536, i1 false) + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -837,27 +837,27 @@ fn by_value_function_arg_arrays_are_memcopied() { define i32 @main() { entry: - %main = alloca i32, align 4 - %arr = alloca [65537 x i32], align 4 + %main = alloca i32, align [filtered] + %arr = alloca [65537 x i32], align [filtered] %0 = bitcast [65537 x i32]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([65537 x i32]* getelementptr ([65537 x i32], [65537 x i32]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([65537 x i32]* getelementptr ([65537 x i32], [65537 x i32]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] %1 = bitcast [65537 x i32]* %arr to i32* %call = call i32 @foo(i32* %1) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } define i32 @foo(i32* %0) { entry: - %foo = alloca i32, align 4 - %val = alloca [65537 x i32], align 4 + %foo = alloca i32, align [filtered] + %val = alloca [65537 x i32], align [filtered] %bitcast = bitcast [65537 x i32]* %val to i32* %1 = bitcast i32* %bitcast to i8* %2 = bitcast i32* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint ([65537 x i32]* getelementptr ([65537 x i32], [65537 x i32]* null, i32 1) to i64), i1 false) - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint ([65537 x i32]* getelementptr ([65537 x i32], [65537 x i32]* null, i32 1) to i64), i1 false) + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -909,25 +909,25 @@ fn by_value_function_arg_structs_are_memcopied() { define i32 @foo(%S_TY* %0) { entry: - %foo = alloca i32, align 4 - %val = alloca %S_TY, align 8 + %foo = alloca i32, align [filtered] + %val = alloca %S_TY, align [filtered] %1 = bitcast %S_TY* %val to i8* %2 = bitcast %S_TY* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%S_TY* getelementptr (%S_TY, %S_TY* null, i32 1) to i64), i1 false) - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%S_TY* getelementptr (%S_TY, %S_TY* null, i32 1) to i64), i1 false) + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } define i32 @main() { entry: - %main = alloca i32, align 4 - %s = alloca %S_TY, align 8 + %main = alloca i32, align [filtered] + %s = alloca %S_TY, align [filtered] %0 = bitcast %S_TY* %s to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%S_TY, %S_TY* @__S_TY__init, i32 0, i32 0), i64 ptrtoint (%S_TY* getelementptr (%S_TY, %S_TY* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds (%S_TY, %S_TY* @__S_TY__init, i32 0, i32 0), i64 ptrtoint (%S_TY* getelementptr (%S_TY, %S_TY* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] %call = call i32 @foo(%S_TY* %s) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } @@ -984,25 +984,25 @@ fn by_value_function_arg_structs_with_aggregate_members_are_memcopied() { define i32 @foo(%AGGREGATE_COLLECTOR_TY* %0) { entry: - %foo = alloca i32, align 4 - %val = alloca %AGGREGATE_COLLECTOR_TY, align 8 + %foo = alloca i32, align [filtered] + %val = alloca %AGGREGATE_COLLECTOR_TY, align [filtered] %1 = bitcast %AGGREGATE_COLLECTOR_TY* %val to i8* %2 = bitcast %AGGREGATE_COLLECTOR_TY* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%AGGREGATE_COLLECTOR_TY* getelementptr (%AGGREGATE_COLLECTOR_TY, %AGGREGATE_COLLECTOR_TY* null, i32 1) to i64), i1 false) - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%AGGREGATE_COLLECTOR_TY* getelementptr (%AGGREGATE_COLLECTOR_TY, %AGGREGATE_COLLECTOR_TY* null, i32 1) to i64), i1 false) + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } define i32 @main() { entry: - %main = alloca i32, align 4 - %s = alloca %AGGREGATE_COLLECTOR_TY, align 8 + %main = alloca i32, align [filtered] + %s = alloca %AGGREGATE_COLLECTOR_TY, align [filtered] %0 = bitcast %AGGREGATE_COLLECTOR_TY* %s to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%AGGREGATE_COLLECTOR_TY* @__AGGREGATE_COLLECTOR_TY__init to i8*), i64 ptrtoint (%AGGREGATE_COLLECTOR_TY* getelementptr (%AGGREGATE_COLLECTOR_TY, %AGGREGATE_COLLECTOR_TY* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%AGGREGATE_COLLECTOR_TY* @__AGGREGATE_COLLECTOR_TY__init to i8*), i64 ptrtoint (%AGGREGATE_COLLECTOR_TY* getelementptr (%AGGREGATE_COLLECTOR_TY, %AGGREGATE_COLLECTOR_TY* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] %call = call i32 @foo(%AGGREGATE_COLLECTOR_TY* %s) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } @@ -1047,34 +1047,34 @@ fn by_value_fb_arg_aggregates_are_memcopied() { define i32 @main() { entry: - %main = alloca i32, align 4 - %str = alloca [65537 x i8], align 1 - %arr = alloca [1024 x i32], align 4 - %fb = alloca %FOO, align 8 + %main = alloca i32, align [filtered] + %str = alloca [65537 x i8], align [filtered] + %arr = alloca [1024 x i32], align [filtered] + %fb = alloca %FOO, align [filtered] %0 = bitcast [65537 x i8]* %str to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([65537 x i8]* getelementptr ([65537 x i8], [65537 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([65537 x i8]* getelementptr ([65537 x i8], [65537 x i8]* null, i32 1) to i64), i1 false) %1 = bitcast [1024 x i32]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([1024 x i32]* getelementptr ([1024 x i32], [1024 x i32]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([1024 x i32]* getelementptr ([1024 x i32], [1024 x i32]* null, i32 1) to i64), i1 false) %2 = bitcast %FOO* %fb to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %2, i8* align 1 getelementptr inbounds (%FOO, %FOO* @__FOO__init, i32 0, i32 0, i32 0), i64 ptrtoint (%FOO* getelementptr (%FOO, %FOO* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %2, i8* align [filtered] getelementptr inbounds (%FOO, %FOO* @__FOO__init, i32 0, i32 0, i32 0), i64 ptrtoint (%FOO* getelementptr (%FOO, %FOO* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] %3 = getelementptr inbounds %FOO, %FOO* %fb, i32 0, i32 0 %4 = bitcast [65537 x i8]* %3 to i8* %5 = bitcast [65537 x i8]* %str to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %4, i8* align 1 %5, i32 65536, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %4, i8* align [filtered] %5, i32 65536, i1 false) %6 = getelementptr inbounds %FOO, %FOO* %fb, i32 0, i32 1 %7 = bitcast [1024 x i32]* %6 to i8* %8 = bitcast [1024 x i32]* %arr to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %7, i8* align 1 %8, i64 ptrtoint ([1024 x i32]* getelementptr ([1024 x i32], [1024 x i32]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %7, i8* align [filtered] %8, i64 ptrtoint ([1024 x i32]* getelementptr ([1024 x i32], [1024 x i32]* null, i32 1) to i64), i1 false) call void @FOO(%FOO* %fb) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } define void @FOO(%FOO* %0) { entry: - %this = alloca %FOO*, align 8 - store %FOO* %0, %FOO** %this, align 8 + %this = alloca %FOO*, align [filtered] + store %FOO* %0, %FOO** %this, align [filtered] %val = getelementptr inbounds %FOO, %FOO* %0, i32 0, i32 0 %field = getelementptr inbounds %FOO, %FOO* %0, i32 0, i32 1 ret void @@ -1143,8 +1143,8 @@ fn var_output_aggregate_types_are_memcopied() { define void @FB(%FB* %0) { entry: - %this = alloca %FB*, align 8 - store %FB* %0, %FB** %this, align 8 + %this = alloca %FB*, align [filtered] + store %FB* %0, %FB** %this, align [filtered] %output = getelementptr inbounds %FB, %FB* %0, i32 0, i32 0 %output2 = getelementptr inbounds %FB, %FB* %0, i32 0, i32 1 %output3 = getelementptr inbounds %FB, %FB* %0, i32 0, i32 2 @@ -1165,23 +1165,23 @@ fn var_output_aggregate_types_are_memcopied() { %1 = getelementptr inbounds %FB, %FB* %station, i32 0, i32 0 %2 = bitcast %OUT_TYPE* %out to i8* %3 = bitcast %OUT_TYPE* %1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %2, i8* align 1 %3, i64 ptrtoint (%OUT_TYPE* getelementptr (%OUT_TYPE, %OUT_TYPE* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %2, i8* align [filtered] %3, i64 ptrtoint (%OUT_TYPE* getelementptr (%OUT_TYPE, %OUT_TYPE* null, i32 1) to i64), i1 false) %4 = getelementptr inbounds %FB, %FB* %station, i32 0, i32 1 %5 = bitcast [11 x i32]* %out2 to i8* %6 = bitcast [11 x i32]* %4 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %5, i8* align 1 %6, i64 ptrtoint ([11 x i32]* getelementptr ([11 x i32], [11 x i32]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %5, i8* align [filtered] %6, i64 ptrtoint ([11 x i32]* getelementptr ([11 x i32], [11 x i32]* null, i32 1) to i64), i1 false) %7 = getelementptr inbounds %FB, %FB* %station, i32 0, i32 2 %8 = bitcast [11 x %OUT_TYPE]* %out3 to i8* %9 = bitcast [11 x %OUT_TYPE]* %7 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %8, i8* align 1 %9, i64 ptrtoint ([11 x %OUT_TYPE]* getelementptr ([11 x %OUT_TYPE], [11 x %OUT_TYPE]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %8, i8* align [filtered] %9, i64 ptrtoint ([11 x %OUT_TYPE]* getelementptr ([11 x %OUT_TYPE], [11 x %OUT_TYPE]* null, i32 1) to i64), i1 false) %10 = getelementptr inbounds %FB, %FB* %station, i32 0, i32 3 %11 = bitcast [81 x i8]* %out4 to i8* %12 = bitcast [81 x i8]* %10 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %11, i8* align 1 %12, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %11, i8* align [filtered] %12, i32 80, i1 false) %13 = getelementptr inbounds %FB, %FB* %station, i32 0, i32 4 %14 = bitcast [81 x i16]* %out5 to i8* %15 = bitcast [81 x i16]* %13 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %14, i8* align 2 %15, i32 160, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %14, i8* align [filtered] %15, i32 160, i1 false) ret void } @@ -1216,7 +1216,7 @@ fn array_of_string_parameter_with_stride_calculation() { ", ); - filtered_assert_snapshot!(result, @r###" + filtered_assert_snapshot!(result, @r#" ; ModuleID = '' source_filename = "" target datalayout = "[filtered]" @@ -1227,22 +1227,22 @@ fn array_of_string_parameter_with_stride_calculation() { define void @foo(i8* %0) { entry: - %strings = alloca i8*, align 8 - store i8* %0, i8** %strings, align 8 - %deref = load i8*, i8** %strings, align 8 + %strings = alloca i8*, align [filtered] + store i8* %0, i8** %strings, align [filtered] + %deref = load i8*, i8** %strings, align [filtered] %tmpVar = getelementptr inbounds i8, i8* %deref, i32 0 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %tmpVar, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) - %deref1 = load i8*, i8** %strings, align 8 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %tmpVar, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + %deref1 = load i8*, i8** %strings, align [filtered] %tmpVar2 = getelementptr inbounds i8, i8* %deref1, i32 81 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %tmpVar2, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %tmpVar2, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) ret void } define void @main() { entry: - %arr = alloca [2 x [81 x i8]], align 1 + %arr = alloca [2 x [81 x i8]], align [filtered] %0 = bitcast [2 x [81 x i8]]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([2 x [81 x i8]]* getelementptr ([2 x [81 x i8]], [2 x [81 x i8]]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([2 x [81 x i8]]* getelementptr ([2 x [81 x i8]], [2 x [81 x i8]]* null, i32 1) to i64), i1 false) %1 = bitcast [2 x [81 x i8]]* %arr to i8* call void @foo(i8* %1) ret void @@ -1256,7 +1256,7 @@ fn array_of_string_parameter_with_stride_calculation() { attributes #0 = { argmemonly nofree nounwind willreturn } attributes #1 = { argmemonly nofree nounwind willreturn writeonly } - "###) + "#) } #[test] @@ -1290,32 +1290,32 @@ fn array_of_array_integer_parameter_with_stride_calculation() { define void @foo(i32* %0) { entry: - %numbers = alloca i32*, align 8 - store i32* %0, i32** %numbers, align 8 - %deref = load i32*, i32** %numbers, align 8 + %numbers = alloca i32*, align [filtered] + store i32* %0, i32** %numbers, align [filtered] + %deref = load i32*, i32** %numbers, align [filtered] %tmpVar = getelementptr inbounds i32, i32* %deref, i32 0 %tmpVar1 = getelementptr inbounds i32, i32* %tmpVar, i32 0 - store i32 1, i32* %tmpVar1, align 4 - %deref2 = load i32*, i32** %numbers, align 8 + store i32 1, i32* %tmpVar1, align [filtered] + %deref2 = load i32*, i32** %numbers, align [filtered] %tmpVar3 = getelementptr inbounds i32, i32* %deref2, i32 0 %tmpVar4 = getelementptr inbounds i32, i32* %tmpVar3, i32 1 - store i32 2, i32* %tmpVar4, align 4 - %deref5 = load i32*, i32** %numbers, align 8 + store i32 2, i32* %tmpVar4, align [filtered] + %deref5 = load i32*, i32** %numbers, align [filtered] %tmpVar6 = getelementptr inbounds i32, i32* %deref5, i32 3 %tmpVar7 = getelementptr inbounds i32, i32* %tmpVar6, i32 0 - store i32 3, i32* %tmpVar7, align 4 - %deref8 = load i32*, i32** %numbers, align 8 + store i32 3, i32* %tmpVar7, align [filtered] + %deref8 = load i32*, i32** %numbers, align [filtered] %tmpVar9 = getelementptr inbounds i32, i32* %deref8, i32 3 %tmpVar10 = getelementptr inbounds i32, i32* %tmpVar9, i32 1 - store i32 4, i32* %tmpVar10, align 4 + store i32 4, i32* %tmpVar10, align [filtered] ret void } define void @main() { entry: - %arr = alloca [2 x [3 x i32]], align 4 + %arr = alloca [2 x [3 x i32]], align [filtered] %0 = bitcast [2 x [3 x i32]]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([2 x [3 x i32]]* getelementptr ([2 x [3 x i32]], [2 x [3 x i32]]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([2 x [3 x i32]]* getelementptr ([2 x [3 x i32]], [2 x [3 x i32]]* null, i32 1) to i64), i1 false) %1 = bitcast [2 x [3 x i32]]* %arr to i32* call void @foo(i32* %1) ret void @@ -1361,22 +1361,22 @@ fn mixed_string_lengths_parameter_compatibility() { define void @foo(i8* %0) { entry: - %short_strings = alloca i8*, align 8 - store i8* %0, i8** %short_strings, align 8 - %deref = load i8*, i8** %short_strings, align 8 + %short_strings = alloca i8*, align [filtered] + store i8* %0, i8** %short_strings, align [filtered] + %deref = load i8*, i8** %short_strings, align [filtered] %tmpVar = getelementptr inbounds i8, i8* %deref, i32 0 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %tmpVar, i8* align 1 getelementptr inbounds ([3 x i8], [3 x i8]* @utf08_literal_1, i32 0, i32 0), i32 3, i1 false) - %deref1 = load i8*, i8** %short_strings, align 8 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %tmpVar, i8* align [filtered] getelementptr inbounds ([3 x i8], [3 x i8]* @utf08_literal_1, i32 0, i32 0), i32 3, i1 false) + %deref1 = load i8*, i8** %short_strings, align [filtered] %tmpVar2 = getelementptr inbounds i8, i8* %deref1, i32 11 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %tmpVar2, i8* align 1 getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 4, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %tmpVar2, i8* align [filtered] getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 4, i1 false) ret void } define void @main() { entry: - %long_strings = alloca [2 x [81 x i8]], align 1 + %long_strings = alloca [2 x [81 x i8]], align [filtered] %0 = bitcast [2 x [81 x i8]]* %long_strings to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([2 x [81 x i8]]* getelementptr ([2 x [81 x i8]], [2 x [81 x i8]]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([2 x [81 x i8]]* getelementptr ([2 x [81 x i8]], [2 x [81 x i8]]* null, i32 1) to i64), i1 false) %1 = bitcast [2 x [81 x i8]]* %long_strings to i8* call void @foo(i8* %1) ret void @@ -1433,25 +1433,25 @@ fn program_with_array_of_string_parameter_stride_calculation() { define void @StringProcessor(%StringProcessor* %0) { entry: %messages = getelementptr inbounds %StringProcessor, %StringProcessor* %0, i32 0, i32 0 - %deref = load [3 x [51 x i8]]*, [3 x [51 x i8]]** %messages, align 8 + %deref = load [3 x [51 x i8]]*, [3 x [51 x i8]]** %messages, align [filtered] %tmpVar = getelementptr inbounds [3 x [51 x i8]], [3 x [51 x i8]]* %deref, i32 0, i32 0 %1 = bitcast [51 x i8]* %tmpVar to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) - %deref1 = load [3 x [51 x i8]]*, [3 x [51 x i8]]** %messages, align 8 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + %deref1 = load [3 x [51 x i8]]*, [3 x [51 x i8]]** %messages, align [filtered] %tmpVar2 = getelementptr inbounds [3 x [51 x i8]], [3 x [51 x i8]]* %deref1, i32 0, i32 1 %2 = bitcast [51 x i8]* %tmpVar2 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %2, i8* align 1 getelementptr inbounds ([7 x i8], [7 x i8]* @utf08_literal_1, i32 0, i32 0), i32 7, i1 false) - %deref3 = load [3 x [51 x i8]]*, [3 x [51 x i8]]** %messages, align 8 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] getelementptr inbounds ([7 x i8], [7 x i8]* @utf08_literal_1, i32 0, i32 0), i32 7, i1 false) + %deref3 = load [3 x [51 x i8]]*, [3 x [51 x i8]]** %messages, align [filtered] %tmpVar4 = getelementptr inbounds [3 x [51 x i8]], [3 x [51 x i8]]* %deref3, i32 0, i32 2 %3 = bitcast [51 x i8]* %tmpVar4 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_2, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_2, i32 0, i32 0), i32 6, i1 false) ret void } define void @main(%main* %0) { entry: %text_array = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - store [3 x [51 x i8]]* %text_array, [3 x [51 x i8]]** getelementptr inbounds (%StringProcessor, %StringProcessor* @StringProcessor_instance, i32 0, i32 0), align 8 + store [3 x [51 x i8]]* %text_array, [3 x [51 x i8]]** getelementptr inbounds (%StringProcessor, %StringProcessor* @StringProcessor_instance, i32 0, i32 0), align [filtered] call void @StringProcessor(%StringProcessor* @StringProcessor_instance) ret void } @@ -1501,25 +1501,25 @@ fn function_block_with_array_of_array_parameter_stride_calculation() { define void @MatrixProcessor(%MatrixProcessor* %0) { entry: - %this = alloca %MatrixProcessor*, align 8 - store %MatrixProcessor* %0, %MatrixProcessor** %this, align 8 + %this = alloca %MatrixProcessor*, align [filtered] + store %MatrixProcessor* %0, %MatrixProcessor** %this, align [filtered] %matrix = getelementptr inbounds %MatrixProcessor, %MatrixProcessor* %0, i32 0, i32 0 - %deref = load [2 x [4 x float]]*, [2 x [4 x float]]** %matrix, align 8 + %deref = load [2 x [4 x float]]*, [2 x [4 x float]]** %matrix, align [filtered] %tmpVar = getelementptr inbounds [2 x [4 x float]], [2 x [4 x float]]* %deref, i32 0, i32 0 %tmpVar1 = getelementptr inbounds [4 x float], [4 x float]* %tmpVar, i32 0, i32 0 - store float 0x3FF19999A0000000, float* %tmpVar1, align 4 - %deref2 = load [2 x [4 x float]]*, [2 x [4 x float]]** %matrix, align 8 + store float 0x3FF19999A0000000, float* %tmpVar1, align [filtered] + %deref2 = load [2 x [4 x float]]*, [2 x [4 x float]]** %matrix, align [filtered] %tmpVar3 = getelementptr inbounds [2 x [4 x float]], [2 x [4 x float]]* %deref2, i32 0, i32 0 %tmpVar4 = getelementptr inbounds [4 x float], [4 x float]* %tmpVar3, i32 0, i32 1 - store float 0x40019999A0000000, float* %tmpVar4, align 4 - %deref5 = load [2 x [4 x float]]*, [2 x [4 x float]]** %matrix, align 8 + store float 0x40019999A0000000, float* %tmpVar4, align [filtered] + %deref5 = load [2 x [4 x float]]*, [2 x [4 x float]]** %matrix, align [filtered] %tmpVar6 = getelementptr inbounds [2 x [4 x float]], [2 x [4 x float]]* %deref5, i32 0, i32 1 %tmpVar7 = getelementptr inbounds [4 x float], [4 x float]* %tmpVar6, i32 0, i32 0 - store float 0x400A666660000000, float* %tmpVar7, align 4 - %deref8 = load [2 x [4 x float]]*, [2 x [4 x float]]** %matrix, align 8 + store float 0x400A666660000000, float* %tmpVar7, align [filtered] + %deref8 = load [2 x [4 x float]]*, [2 x [4 x float]]** %matrix, align [filtered] %tmpVar9 = getelementptr inbounds [2 x [4 x float]], [2 x [4 x float]]* %deref8, i32 0, i32 1 %tmpVar10 = getelementptr inbounds [4 x float], [4 x float]* %tmpVar9, i32 0, i32 1 - store float 0x40119999A0000000, float* %tmpVar10, align 4 + store float 0x40119999A0000000, float* %tmpVar10, align [filtered] ret void } @@ -1528,7 +1528,7 @@ fn function_block_with_array_of_array_parameter_stride_calculation() { %processor = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %data = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %1 = getelementptr inbounds %MatrixProcessor, %MatrixProcessor* %processor, i32 0, i32 0 - store [2 x [4 x float]]* %data, [2 x [4 x float]]** %1, align 8 + store [2 x [4 x float]]* %data, [2 x [4 x float]]** %1, align [filtered] call void @MatrixProcessor(%MatrixProcessor* %processor) ret void } @@ -1580,14 +1580,14 @@ fn method_with_var_in_out_array_of_strings() { define void @StringHandler__process_strings(%StringHandler* %0, i8* %1) { entry: - %string_list = alloca i8*, align 8 - store i8* %1, i8** %string_list, align 8 - %deref = load i8*, i8** %string_list, align 8 + %string_list = alloca i8*, align [filtered] + store i8* %1, i8** %string_list, align [filtered] + %deref = load i8*, i8** %string_list, align [filtered] %tmpVar = getelementptr inbounds i8, i8* %deref, i32 0 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %tmpVar, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) - %deref1 = load i8*, i8** %string_list, align 8 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %tmpVar, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + %deref1 = load i8*, i8** %string_list, align [filtered] %tmpVar2 = getelementptr inbounds i8, i8* %deref1, i32 31 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %tmpVar2, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %tmpVar2, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) ret void } @@ -1647,33 +1647,33 @@ fn method_with_var_in_out_nested_integer_arrays() { define void @DataProcessor(%DataProcessor* %0) { entry: - %this = alloca %DataProcessor*, align 8 - store %DataProcessor* %0, %DataProcessor** %this, align 8 + %this = alloca %DataProcessor*, align [filtered] + store %DataProcessor* %0, %DataProcessor** %this, align [filtered] ret void } define void @DataProcessor__process_matrix(%DataProcessor* %0, i32* %1) { entry: - %this = alloca %DataProcessor*, align 8 - store %DataProcessor* %0, %DataProcessor** %this, align 8 - %data = alloca i32*, align 8 - store i32* %1, i32** %data, align 8 - %deref = load i32*, i32** %data, align 8 + %this = alloca %DataProcessor*, align [filtered] + store %DataProcessor* %0, %DataProcessor** %this, align [filtered] + %data = alloca i32*, align [filtered] + store i32* %1, i32** %data, align [filtered] + %deref = load i32*, i32** %data, align [filtered] %tmpVar = getelementptr inbounds i32, i32* %deref, i32 0 %tmpVar1 = getelementptr inbounds i32, i32* %tmpVar, i32 0 - store i32 10, i32* %tmpVar1, align 4 - %deref2 = load i32*, i32** %data, align 8 + store i32 10, i32* %tmpVar1, align [filtered] + %deref2 = load i32*, i32** %data, align [filtered] %tmpVar3 = getelementptr inbounds i32, i32* %deref2, i32 0 %tmpVar4 = getelementptr inbounds i32, i32* %tmpVar3, i32 1 - store i32 20, i32* %tmpVar4, align 4 - %deref5 = load i32*, i32** %data, align 8 + store i32 20, i32* %tmpVar4, align [filtered] + %deref5 = load i32*, i32** %data, align [filtered] %tmpVar6 = getelementptr inbounds i32, i32* %deref5, i32 2 %tmpVar7 = getelementptr inbounds i32, i32* %tmpVar6, i32 0 - store i32 30, i32* %tmpVar7, align 4 - %deref8 = load i32*, i32** %data, align 8 + store i32 30, i32* %tmpVar7, align [filtered] + %deref8 = load i32*, i32** %data, align [filtered] %tmpVar9 = getelementptr inbounds i32, i32* %deref8, i32 2 %tmpVar10 = getelementptr inbounds i32, i32* %tmpVar9, i32 1 - store i32 40, i32* %tmpVar10, align 4 + store i32 40, i32* %tmpVar10, align [filtered] ret void } @@ -1732,33 +1732,33 @@ fn method_with_mixed_array_types() { define void @ComplexHandler(%ComplexHandler* %0) { entry: - %this = alloca %ComplexHandler*, align 8 - store %ComplexHandler* %0, %ComplexHandler** %this, align 8 + %this = alloca %ComplexHandler*, align [filtered] + store %ComplexHandler* %0, %ComplexHandler** %this, align [filtered] ret void } define void @ComplexHandler__handle_data(%ComplexHandler* %0, i8* %1, i16* %2) { entry: - %this = alloca %ComplexHandler*, align 8 - store %ComplexHandler* %0, %ComplexHandler** %this, align 8 - %strings = alloca i8*, align 8 - store i8* %1, i8** %strings, align 8 - %numbers = alloca i16*, align 8 - store i16* %2, i16** %numbers, align 8 - %deref = load i8*, i8** %strings, align 8 + %this = alloca %ComplexHandler*, align [filtered] + store %ComplexHandler* %0, %ComplexHandler** %this, align [filtered] + %strings = alloca i8*, align [filtered] + store i8* %1, i8** %strings, align [filtered] + %numbers = alloca i16*, align [filtered] + store i16* %2, i16** %numbers, align [filtered] + %deref = load i8*, i8** %strings, align [filtered] %tmpVar = getelementptr inbounds i8, i8* %deref, i32 0 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %tmpVar, i8* align 1 getelementptr inbounds ([5 x i8], [5 x i8]* @utf08_literal_0, i32 0, i32 0), i32 5, i1 false) - %deref1 = load i8*, i8** %strings, align 8 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %tmpVar, i8* align [filtered] getelementptr inbounds ([5 x i8], [5 x i8]* @utf08_literal_0, i32 0, i32 0), i32 5, i1 false) + %deref1 = load i8*, i8** %strings, align [filtered] %tmpVar2 = getelementptr inbounds i8, i8* %deref1, i32 21 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %tmpVar2, i8* align 1 getelementptr inbounds ([11 x i8], [11 x i8]* @utf08_literal_1, i32 0, i32 0), i32 11, i1 false) - %deref3 = load i16*, i16** %numbers, align 8 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %tmpVar2, i8* align [filtered] getelementptr inbounds ([11 x i8], [11 x i8]* @utf08_literal_1, i32 0, i32 0), i32 11, i1 false) + %deref3 = load i16*, i16** %numbers, align [filtered] %tmpVar4 = getelementptr inbounds i16, i16* %deref3, i32 0 %tmpVar5 = getelementptr inbounds i16, i16* %tmpVar4, i32 0 - store i16 100, i16* %tmpVar5, align 2 - %deref6 = load i16*, i16** %numbers, align 8 + store i16 100, i16* %tmpVar5, align [filtered] + %deref6 = load i16*, i16** %numbers, align [filtered] %tmpVar7 = getelementptr inbounds i16, i16* %deref6, i32 2 %tmpVar8 = getelementptr inbounds i16, i16* %tmpVar7, i32 1 - store i16 200, i16* %tmpVar8, align 2 + store i16 200, i16* %tmpVar8, align [filtered] ret void } @@ -1839,71 +1839,71 @@ fn function_with_array_of_array_return() { define void @foo(i16* %0) { entry: - %foo = alloca i16*, align 8 - store i16* %0, i16** %foo, align 8 - %result = alloca [2 x [2 x i16]], align 2 + %foo = alloca i16*, align [filtered] + store i16* %0, i16** %foo, align [filtered] + %result = alloca [2 x [2 x i16]], align [filtered] %1 = bitcast [2 x [2 x i16]]* %result to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) %tmpVar = getelementptr inbounds [2 x [2 x i16]], [2 x [2 x i16]]* %result, i32 0, i32 0 %tmpVar1 = getelementptr inbounds [2 x i16], [2 x i16]* %tmpVar, i32 0, i32 0 - store i16 5, i16* %tmpVar1, align 2 + store i16 5, i16* %tmpVar1, align [filtered] %tmpVar2 = getelementptr inbounds [2 x [2 x i16]], [2 x [2 x i16]]* %result, i32 0, i32 0 %tmpVar3 = getelementptr inbounds [2 x i16], [2 x i16]* %tmpVar2, i32 0, i32 1 - store i16 10, i16* %tmpVar3, align 2 + store i16 10, i16* %tmpVar3, align [filtered] %tmpVar4 = getelementptr inbounds [2 x [2 x i16]], [2 x [2 x i16]]* %result, i32 0, i32 1 %tmpVar5 = getelementptr inbounds [2 x i16], [2 x i16]* %tmpVar4, i32 0, i32 0 - store i16 15, i16* %tmpVar5, align 2 + store i16 15, i16* %tmpVar5, align [filtered] %tmpVar6 = getelementptr inbounds [2 x [2 x i16]], [2 x [2 x i16]]* %result, i32 0, i32 1 %tmpVar7 = getelementptr inbounds [2 x i16], [2 x i16]* %tmpVar6, i32 0, i32 1 - store i16 20, i16* %tmpVar7, align 2 - %deref = load i16*, i16** %foo, align 8 + store i16 20, i16* %tmpVar7, align [filtered] + %deref = load i16*, i16** %foo, align [filtered] %2 = bitcast i16* %deref to i8* %3 = bitcast [2 x [2 x i16]]* %result to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %2, i8* align 1 %3, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %2, i8* align [filtered] %3, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) ret void } define void @bar(i16* %0) { entry: - %bar = alloca i16*, align 8 - store i16* %0, i16** %bar, align 8 - %data = alloca [2 x [2 x i16]], align 2 + %bar = alloca i16*, align [filtered] + store i16* %0, i16** %bar, align [filtered] + %data = alloca [2 x [2 x i16]], align [filtered] %1 = bitcast [2 x [2 x i16]]* %data to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) - %__foo0 = alloca [2 x [2 x i16]], align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) + %__foo0 = alloca [2 x [2 x i16]], align [filtered] %2 = bitcast [2 x [2 x i16]]* %__foo0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %2, i8 0, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %2, i8 0, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) %3 = bitcast [2 x [2 x i16]]* %__foo0 to i16* call void @foo(i16* %3) %4 = bitcast [2 x [2 x i16]]* %data to i8* %5 = bitcast [2 x [2 x i16]]* %__foo0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %4, i8* align 1 %5, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) - %deref = load i16*, i16** %bar, align 8 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %4, i8* align [filtered] %5, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) + %deref = load i16*, i16** %bar, align [filtered] %6 = bitcast i16* %deref to i8* %7 = bitcast [2 x [2 x i16]]* %data to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %6, i8* align 1 %7, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %6, i8* align [filtered] %7, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) ret void } define void @baz(i8* %0) { entry: - %baz = alloca i8*, align 8 - store i8* %0, i8** %baz, align 8 - %texts = alloca [3 x [21 x i8]], align 1 + %baz = alloca i8*, align [filtered] + store i8* %0, i8** %baz, align [filtered] + %texts = alloca [3 x [21 x i8]], align [filtered] %1 = bitcast [3 x [21 x i8]]* %texts to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([3 x [21 x i8]]* getelementptr ([3 x [21 x i8]], [3 x [21 x i8]]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([3 x [21 x i8]]* getelementptr ([3 x [21 x i8]], [3 x [21 x i8]]* null, i32 1) to i64), i1 false) %tmpVar = getelementptr inbounds [3 x [21 x i8]], [3 x [21 x i8]]* %texts, i32 0, i32 0 %2 = bitcast [21 x i8]* %tmpVar to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %2, i8* align 1 getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 4, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 4, i1 false) %tmpVar1 = getelementptr inbounds [3 x [21 x i8]], [3 x [21 x i8]]* %texts, i32 0, i32 1 %3 = bitcast [21 x i8]* %tmpVar1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_2, i32 0, i32 0), i32 4, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_2, i32 0, i32 0), i32 4, i1 false) %tmpVar2 = getelementptr inbounds [3 x [21 x i8]], [3 x [21 x i8]]* %texts, i32 0, i32 2 %4 = bitcast [21 x i8]* %tmpVar2 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %4, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) - %deref = load i8*, i8** %baz, align 8 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %4, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) + %deref = load i8*, i8** %baz, align [filtered] %5 = bitcast [3 x [21 x i8]]* %texts to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %deref, i8* align 1 %5, i64 ptrtoint ([3 x [21 x i8]]* getelementptr ([3 x [21 x i8]], [3 x [21 x i8]]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %deref, i8* align [filtered] %5, i64 ptrtoint ([3 x [21 x i8]]* getelementptr ([3 x [21 x i8]], [3 x [21 x i8]]* null, i32 1) to i64), i1 false) ret void } @@ -1911,22 +1911,22 @@ fn function_with_array_of_array_return() { entry: %numbers = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %strings = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - %__bar1 = alloca [2 x [2 x i16]], align 2 + %__bar1 = alloca [2 x [2 x i16]], align [filtered] %1 = bitcast [2 x [2 x i16]]* %__bar1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) %2 = bitcast [2 x [2 x i16]]* %__bar1 to i16* call void @bar(i16* %2) %3 = bitcast [2 x [2 x i16]]* %numbers to i8* %4 = bitcast [2 x [2 x i16]]* %__bar1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %3, i8* align 1 %4, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) - %__baz2 = alloca [3 x [21 x i8]], align 1 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %3, i8* align [filtered] %4, i64 ptrtoint ([2 x [2 x i16]]* getelementptr ([2 x [2 x i16]], [2 x [2 x i16]]* null, i32 1) to i64), i1 false) + %__baz2 = alloca [3 x [21 x i8]], align [filtered] %5 = bitcast [3 x [21 x i8]]* %__baz2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %5, i8 0, i64 ptrtoint ([3 x [21 x i8]]* getelementptr ([3 x [21 x i8]], [3 x [21 x i8]]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %5, i8 0, i64 ptrtoint ([3 x [21 x i8]]* getelementptr ([3 x [21 x i8]], [3 x [21 x i8]]* null, i32 1) to i64), i1 false) %6 = bitcast [3 x [21 x i8]]* %__baz2 to i8* call void @baz(i8* %6) %7 = bitcast [3 x [21 x i8]]* %strings to i8* %8 = bitcast [3 x [21 x i8]]* %__baz2 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %7, i8* align 1 %8, i64 ptrtoint ([3 x [21 x i8]]* getelementptr ([3 x [21 x i8]], [3 x [21 x i8]]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %7, i8* align [filtered] %8, i64 ptrtoint ([3 x [21 x i8]]* getelementptr ([3 x [21 x i8]], [3 x [21 x i8]]* null, i32 1) to i64), i1 false) ret void } diff --git a/src/codegen/tests/polymorphism.rs b/src/codegen/tests/polymorphism.rs index ef2d4d9d9ee..d7c6441bebd 100644 --- a/src/codegen/tests/polymorphism.rs +++ b/src/codegen/tests/polymorphism.rs @@ -66,8 +66,8 @@ fn simple_overridden_method() { define void @A(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %__vtable = getelementptr inbounds %A, %A* %0, i32 0, i32 0 %one = getelementptr inbounds %A, %A* %0, i32 0, i32 1 %two = getelementptr inbounds %A, %A* %0, i32 0, i32 2 @@ -76,23 +76,23 @@ fn simple_overridden_method() { define i16 @A__foo(%A* %0, i32 %1) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %__vtable = getelementptr inbounds %A, %A* %0, i32 0, i32 0 %one = getelementptr inbounds %A, %A* %0, i32 0, i32 1 %two = getelementptr inbounds %A, %A* %0, i32 0, i32 2 - %A.foo = alloca i16, align 2 - %in = alloca i32, align 4 - store i32 %1, i32* %in, align 4 - store i16 0, i16* %A.foo, align 2 - %A__foo_ret = load i16, i16* %A.foo, align 2 + %A.foo = alloca i16, align [filtered] + %in = alloca i32, align [filtered] + store i32 %1, i32* %in, align [filtered] + store i16 0, i16* %A.foo, align [filtered] + %A__foo_ret = load i16, i16* %A.foo, align [filtered] ret i16 %A__foo_ret } define void @B(%B* %0) { entry: - %this = alloca %B*, align 8 - store %B* %0, %B** %this, align 8 + %this = alloca %B*, align [filtered] + store %B* %0, %B** %this, align [filtered] %__A = getelementptr inbounds %B, %B* %0, i32 0, i32 0 %three = getelementptr inbounds %B, %B* %0, i32 0, i32 1 %four = getelementptr inbounds %B, %B* %0, i32 0, i32 2 @@ -101,51 +101,51 @@ fn simple_overridden_method() { define i16 @B__foo(%B* %0, i32 %1) { entry: - %this = alloca %B*, align 8 - store %B* %0, %B** %this, align 8 + %this = alloca %B*, align [filtered] + store %B* %0, %B** %this, align [filtered] %__A = getelementptr inbounds %B, %B* %0, i32 0, i32 0 %three = getelementptr inbounds %B, %B* %0, i32 0, i32 1 %four = getelementptr inbounds %B, %B* %0, i32 0, i32 2 - %B.foo = alloca i16, align 2 - %in = alloca i32, align 4 - store i32 %1, i32* %in, align 4 - store i16 0, i16* %B.foo, align 2 - %B__foo_ret = load i16, i16* %B.foo, align 2 + %B.foo = alloca i16, align [filtered] + %in = alloca i32, align [filtered] + store i32 %1, i32* %in, align [filtered] + store i16 0, i16* %B.foo, align [filtered] + %B__foo_ret = load i16, i16* %B.foo, align [filtered] ret i16 %B__foo_ret } define void @main() { entry: - %instanceA = alloca %A, align 8 - %instanceB = alloca %B, align 8 - %refInstanceA = alloca %A*, align 8 + %instanceA = alloca %A, align [filtered] + %instanceB = alloca %B, align [filtered] + %refInstanceA = alloca %A*, align [filtered] %0 = bitcast %A* %instanceA to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%A* @__A__init to i8*), i64 ptrtoint (%A* getelementptr (%A, %A* null, i32 1) to i64), i1 false) %1 = bitcast %B* %instanceB to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 bitcast (%B* @__B__init to i8*), i64 ptrtoint (%B* getelementptr (%B, %B* null, i32 1) to i64), i1 false) - store %A* null, %A** %refInstanceA, align 8 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] bitcast (%B* @__B__init to i8*), i64 ptrtoint (%B* getelementptr (%B, %B* null, i32 1) to i64), i1 false) + store %A* null, %A** %refInstanceA, align [filtered] call void @__init_a(%A* %instanceA) call void @__init_b(%B* %instanceB) call void @__user_init_A(%A* %instanceA) call void @__user_init_B(%B* %instanceB) - store %A* %instanceA, %A** %refInstanceA, align 8 - %deref = load %A*, %A** %refInstanceA, align 8 + store %A* %instanceA, %A** %refInstanceA, align [filtered] + %deref = load %A*, %A** %refInstanceA, align [filtered] %__vtable = getelementptr inbounds %A, %A* %deref, i32 0, i32 0 - %deref1 = load i32*, i32** %__vtable, align 8 + %deref1 = load i32*, i32** %__vtable, align [filtered] %cast = bitcast i32* %deref1 to %__vtable_A* %foo = getelementptr inbounds %__vtable_A, %__vtable_A* %cast, i32 0, i32 1 - %2 = load i16 (%A*, i32)*, i16 (%A*, i32)** %foo, align 8 - %deref2 = load %A*, %A** %refInstanceA, align 8 + %2 = load i16 (%A*, i32)*, i16 (%A*, i32)** %foo, align [filtered] + %deref2 = load %A*, %A** %refInstanceA, align [filtered] %fnptr_call = call i16 %2(%A* %deref2, i32 5) %3 = bitcast %B* %instanceB to %A* - store %A* %3, %A** %refInstanceA, align 8 - %deref3 = load %A*, %A** %refInstanceA, align 8 + store %A* %3, %A** %refInstanceA, align [filtered] + %deref3 = load %A*, %A** %refInstanceA, align [filtered] %__vtable4 = getelementptr inbounds %A, %A* %deref3, i32 0, i32 0 - %deref5 = load i32*, i32** %__vtable4, align 8 + %deref5 = load i32*, i32** %__vtable4, align [filtered] %cast6 = bitcast i32* %deref5 to %__vtable_A* %foo7 = getelementptr inbounds %__vtable_A, %__vtable_A* %cast6, i32 0, i32 1 - %4 = load i16 (%A*, i32)*, i16 (%A*, i32)** %foo7, align 8 - %deref8 = load %A*, %A** %refInstanceA, align 8 + %4 = load i16 (%A*, i32)*, i16 (%A*, i32)** %foo7, align [filtered] + %deref8 = load %A*, %A** %refInstanceA, align [filtered] %fnptr_call9 = call i16 %4(%A* %deref8, i32 10) ret void } @@ -155,66 +155,66 @@ fn simple_overridden_method() { define void @__init___vtable_a(%__vtable_A* %0) { entry: - %self = alloca %__vtable_A*, align 8 - store %__vtable_A* %0, %__vtable_A** %self, align 8 - %deref = load %__vtable_A*, %__vtable_A** %self, align 8 + %self = alloca %__vtable_A*, align [filtered] + store %__vtable_A* %0, %__vtable_A** %self, align [filtered] + %deref = load %__vtable_A*, %__vtable_A** %self, align [filtered] %__body = getelementptr inbounds %__vtable_A, %__vtable_A* %deref, i32 0, i32 0 - store void (%A*)* @A, void (%A*)** %__body, align 8 - %deref1 = load %__vtable_A*, %__vtable_A** %self, align 8 + store void (%A*)* @A, void (%A*)** %__body, align [filtered] + %deref1 = load %__vtable_A*, %__vtable_A** %self, align [filtered] %foo = getelementptr inbounds %__vtable_A, %__vtable_A* %deref1, i32 0, i32 1 - store i16 (%A*, i32)* @A__foo, i16 (%A*, i32)** %foo, align 8 + store i16 (%A*, i32)* @A__foo, i16 (%A*, i32)** %foo, align [filtered] ret void } define void @__init___vtable_b(%__vtable_B* %0) { entry: - %self = alloca %__vtable_B*, align 8 - store %__vtable_B* %0, %__vtable_B** %self, align 8 - %deref = load %__vtable_B*, %__vtable_B** %self, align 8 + %self = alloca %__vtable_B*, align [filtered] + store %__vtable_B* %0, %__vtable_B** %self, align [filtered] + %deref = load %__vtable_B*, %__vtable_B** %self, align [filtered] %__body = getelementptr inbounds %__vtable_B, %__vtable_B* %deref, i32 0, i32 0 - store void (%B*)* @B, void (%B*)** %__body, align 8 - %deref1 = load %__vtable_B*, %__vtable_B** %self, align 8 + store void (%B*)* @B, void (%B*)** %__body, align [filtered] + %deref1 = load %__vtable_B*, %__vtable_B** %self, align [filtered] %foo = getelementptr inbounds %__vtable_B, %__vtable_B* %deref1, i32 0, i32 1 - store i16 (%B*, i32)* @B__foo, i16 (%B*, i32)** %foo, align 8 + store i16 (%B*, i32)* @B__foo, i16 (%B*, i32)** %foo, align [filtered] ret void } define void @__init_b(%B* %0) { entry: - %self = alloca %B*, align 8 - store %B* %0, %B** %self, align 8 - %deref = load %B*, %B** %self, align 8 + %self = alloca %B*, align [filtered] + store %B* %0, %B** %self, align [filtered] + %deref = load %B*, %B** %self, align [filtered] %__A = getelementptr inbounds %B, %B* %deref, i32 0, i32 0 call void @__init_a(%A* %__A) - %deref1 = load %B*, %B** %self, align 8 + %deref1 = load %B*, %B** %self, align [filtered] %__A2 = getelementptr inbounds %B, %B* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %A, %A* %__A2, i32 0, i32 0 - store i32* bitcast (%__vtable_B* @__vtable_B_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_B* @__vtable_B_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_a(%A* %0) { entry: - %self = alloca %A*, align 8 - store %A* %0, %A** %self, align 8 - %deref = load %A*, %A** %self, align 8 + %self = alloca %A*, align [filtered] + store %A* %0, %A** %self, align [filtered] + %deref = load %A*, %A** %self, align [filtered] %__vtable = getelementptr inbounds %A, %A* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_A* @__vtable_A_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_A* @__vtable_A_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_A(%__vtable_A* %0) { entry: - %self = alloca %__vtable_A*, align 8 - store %__vtable_A* %0, %__vtable_A** %self, align 8 + %self = alloca %__vtable_A*, align [filtered] + store %__vtable_A* %0, %__vtable_A** %self, align [filtered] ret void } define void @__user_init_B(%B* %0) { entry: - %self = alloca %B*, align 8 - store %B* %0, %B** %self, align 8 - %deref = load %B*, %B** %self, align 8 + %self = alloca %B*, align [filtered] + store %B* %0, %B** %self, align [filtered] + %deref = load %B*, %B** %self, align [filtered] %__A = getelementptr inbounds %B, %B* %deref, i32 0, i32 0 call void @__user_init_A(%A* %__A) ret void @@ -222,15 +222,15 @@ fn simple_overridden_method() { define void @__user_init_A(%A* %0) { entry: - %self = alloca %A*, align 8 - store %A* %0, %A** %self, align 8 + %self = alloca %A*, align [filtered] + store %A* %0, %A** %self, align [filtered] ret void } define void @__user_init___vtable_B(%__vtable_B* %0) { entry: - %self = alloca %__vtable_B*, align 8 - store %__vtable_B* %0, %__vtable_B** %self, align 8 + %self = alloca %__vtable_B*, align [filtered] + store %__vtable_B* %0, %__vtable_B** %self, align [filtered] ret void } @@ -283,78 +283,78 @@ fn method_call_within_method() { define void @A(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %__vtable = getelementptr inbounds %A, %A* %0, i32 0, i32 0 ret void } define i16 @A__foo(%A* %0, i32 %1) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %__vtable = getelementptr inbounds %A, %A* %0, i32 0, i32 0 - %A.foo = alloca i16, align 2 - %in = alloca i32, align 4 - store i32 %1, i32* %in, align 4 - store i16 0, i16* %A.foo, align 2 - %A__foo_ret = load i16, i16* %A.foo, align 2 + %A.foo = alloca i16, align [filtered] + %in = alloca i32, align [filtered] + store i32 %1, i32* %in, align [filtered] + store i16 0, i16* %A.foo, align [filtered] + %A__foo_ret = load i16, i16* %A.foo, align [filtered] ret i16 %A__foo_ret } define void @A__bar(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %__vtable = getelementptr inbounds %A, %A* %0, i32 0, i32 0 - %deref = load %A*, %A** %this, align 8 + %deref = load %A*, %A** %this, align [filtered] %__vtable1 = getelementptr inbounds %A, %A* %deref, i32 0, i32 0 - %deref2 = load i32*, i32** %__vtable1, align 8 + %deref2 = load i32*, i32** %__vtable1, align [filtered] %cast = bitcast i32* %deref2 to %__vtable_A* %foo = getelementptr inbounds %__vtable_A, %__vtable_A* %cast, i32 0, i32 1 - %1 = load i16 (%A*, i32)*, i16 (%A*, i32)** %foo, align 8 - %deref3 = load %A*, %A** %this, align 8 + %1 = load i16 (%A*, i32)*, i16 (%A*, i32)** %foo, align [filtered] + %deref3 = load %A*, %A** %this, align [filtered] %fnptr_call = call i16 %1(%A* %deref3, i32 5) ret void } define void @__init___vtable_a(%__vtable_A* %0) { entry: - %self = alloca %__vtable_A*, align 8 - store %__vtable_A* %0, %__vtable_A** %self, align 8 - %deref = load %__vtable_A*, %__vtable_A** %self, align 8 + %self = alloca %__vtable_A*, align [filtered] + store %__vtable_A* %0, %__vtable_A** %self, align [filtered] + %deref = load %__vtable_A*, %__vtable_A** %self, align [filtered] %__body = getelementptr inbounds %__vtable_A, %__vtable_A* %deref, i32 0, i32 0 - store void (%A*)* @A, void (%A*)** %__body, align 8 - %deref1 = load %__vtable_A*, %__vtable_A** %self, align 8 + store void (%A*)* @A, void (%A*)** %__body, align [filtered] + %deref1 = load %__vtable_A*, %__vtable_A** %self, align [filtered] %foo = getelementptr inbounds %__vtable_A, %__vtable_A* %deref1, i32 0, i32 1 - store i16 (%A*, i32)* @A__foo, i16 (%A*, i32)** %foo, align 8 - %deref2 = load %__vtable_A*, %__vtable_A** %self, align 8 + store i16 (%A*, i32)* @A__foo, i16 (%A*, i32)** %foo, align [filtered] + %deref2 = load %__vtable_A*, %__vtable_A** %self, align [filtered] %bar = getelementptr inbounds %__vtable_A, %__vtable_A* %deref2, i32 0, i32 2 - store void (%A*)* @A__bar, void (%A*)** %bar, align 8 + store void (%A*)* @A__bar, void (%A*)** %bar, align [filtered] ret void } define void @__init_a(%A* %0) { entry: - %self = alloca %A*, align 8 - store %A* %0, %A** %self, align 8 - %deref = load %A*, %A** %self, align 8 + %self = alloca %A*, align [filtered] + store %A* %0, %A** %self, align [filtered] + %deref = load %A*, %A** %self, align [filtered] %__vtable = getelementptr inbounds %A, %A* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_A* @__vtable_A_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_A* @__vtable_A_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_A(%A* %0) { entry: - %self = alloca %A*, align 8 - store %A* %0, %A** %self, align 8 + %self = alloca %A*, align [filtered] + store %A* %0, %A** %self, align [filtered] ret void } define void @__user_init___vtable_A(%__vtable_A* %0) { entry: - %self = alloca %__vtable_A*, align 8 - store %__vtable_A* %0, %__vtable_A** %self, align 8 + %self = alloca %__vtable_A*, align [filtered] + store %__vtable_A* %0, %__vtable_A** %self, align [filtered] ret void } @@ -432,47 +432,47 @@ fn this_is_untouched() { define void @A(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %__vtable = getelementptr inbounds %A, %A* %0, i32 0, i32 0 ret void } define i16 @A__foo(%A* %0, i32 %1) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %__vtable = getelementptr inbounds %A, %A* %0, i32 0, i32 0 - %A.foo = alloca i16, align 2 - %in = alloca i32, align 4 - store i32 %1, i32* %in, align 4 - store i16 0, i16* %A.foo, align 2 - %A__foo_ret = load i16, i16* %A.foo, align 2 + %A.foo = alloca i16, align [filtered] + %in = alloca i32, align [filtered] + store i32 %1, i32* %in, align [filtered] + store i16 0, i16* %A.foo, align [filtered] + %A__foo_ret = load i16, i16* %A.foo, align [filtered] ret i16 %A__foo_ret } define void @A__bar(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %__vtable = getelementptr inbounds %A, %A* %0, i32 0, i32 0 ret void } define void @B(%B* %0) { entry: - %this = alloca %B*, align 8 - store %B* %0, %B** %this, align 8 + %this = alloca %B*, align [filtered] + store %B* %0, %B** %this, align [filtered] %__A = getelementptr inbounds %B, %B* %0, i32 0, i32 0 ret void } define void @B__bar(%B* %0) { entry: - %this = alloca %B*, align 8 - store %B* %0, %B** %this, align 8 + %this = alloca %B*, align [filtered] + store %B* %0, %B** %this, align [filtered] %__A = getelementptr inbounds %B, %B* %0, i32 0, i32 0 - %deref = load %B*, %B** %this, align 8 + %deref = load %B*, %B** %this, align [filtered] %__A1 = getelementptr inbounds %B, %B* %deref, i32 0, i32 0 %call = call i16 @A__foo(%A* %__A1, i32 5) ret void @@ -480,128 +480,128 @@ fn this_is_untouched() { define void @C(%C* %0) { entry: - %this = alloca %C*, align 8 - store %C* %0, %C** %this, align 8 + %this = alloca %C*, align [filtered] + store %C* %0, %C** %this, align [filtered] %__A = getelementptr inbounds %C, %C* %0, i32 0, i32 0 ret void } define i16 @C__foo(%C* %0, i32 %1) { entry: - %this = alloca %C*, align 8 - store %C* %0, %C** %this, align 8 + %this = alloca %C*, align [filtered] + store %C* %0, %C** %this, align [filtered] %__A = getelementptr inbounds %C, %C* %0, i32 0, i32 0 - %C.foo = alloca i16, align 2 - %in = alloca i32, align 4 - store i32 %1, i32* %in, align 4 - store i16 0, i16* %C.foo, align 2 - %deref = load %C*, %C** %this, align 8 + %C.foo = alloca i16, align [filtered] + %in = alloca i32, align [filtered] + store i32 %1, i32* %in, align [filtered] + store i16 0, i16* %C.foo, align [filtered] + %deref = load %C*, %C** %this, align [filtered] call void @C__bar(%C* %deref) - %C__foo_ret = load i16, i16* %C.foo, align 2 + %C__foo_ret = load i16, i16* %C.foo, align [filtered] ret i16 %C__foo_ret } define void @C__bar(%C* %0) { entry: - %this = alloca %C*, align 8 - store %C* %0, %C** %this, align 8 + %this = alloca %C*, align [filtered] + store %C* %0, %C** %this, align [filtered] %__A = getelementptr inbounds %C, %C* %0, i32 0, i32 0 - %deref = load %C*, %C** %this, align 8 + %deref = load %C*, %C** %this, align [filtered] %call = call i16 @C__foo(%C* %deref, i32 5) ret void } define void @__init___vtable_a(%__vtable_A* %0) { entry: - %self = alloca %__vtable_A*, align 8 - store %__vtable_A* %0, %__vtable_A** %self, align 8 - %deref = load %__vtable_A*, %__vtable_A** %self, align 8 + %self = alloca %__vtable_A*, align [filtered] + store %__vtable_A* %0, %__vtable_A** %self, align [filtered] + %deref = load %__vtable_A*, %__vtable_A** %self, align [filtered] %__body = getelementptr inbounds %__vtable_A, %__vtable_A* %deref, i32 0, i32 0 - store void (%A*)* @A, void (%A*)** %__body, align 8 - %deref1 = load %__vtable_A*, %__vtable_A** %self, align 8 + store void (%A*)* @A, void (%A*)** %__body, align [filtered] + %deref1 = load %__vtable_A*, %__vtable_A** %self, align [filtered] %foo = getelementptr inbounds %__vtable_A, %__vtable_A* %deref1, i32 0, i32 1 - store i16 (%A*, i32)* @A__foo, i16 (%A*, i32)** %foo, align 8 - %deref2 = load %__vtable_A*, %__vtable_A** %self, align 8 + store i16 (%A*, i32)* @A__foo, i16 (%A*, i32)** %foo, align [filtered] + %deref2 = load %__vtable_A*, %__vtable_A** %self, align [filtered] %bar = getelementptr inbounds %__vtable_A, %__vtable_A* %deref2, i32 0, i32 2 - store void (%A*)* @A__bar, void (%A*)** %bar, align 8 + store void (%A*)* @A__bar, void (%A*)** %bar, align [filtered] ret void } define void @__init___vtable_b(%__vtable_B* %0) { entry: - %self = alloca %__vtable_B*, align 8 - store %__vtable_B* %0, %__vtable_B** %self, align 8 - %deref = load %__vtable_B*, %__vtable_B** %self, align 8 + %self = alloca %__vtable_B*, align [filtered] + store %__vtable_B* %0, %__vtable_B** %self, align [filtered] + %deref = load %__vtable_B*, %__vtable_B** %self, align [filtered] %__body = getelementptr inbounds %__vtable_B, %__vtable_B* %deref, i32 0, i32 0 - store void (%B*)* @B, void (%B*)** %__body, align 8 - %deref1 = load %__vtable_B*, %__vtable_B** %self, align 8 + store void (%B*)* @B, void (%B*)** %__body, align [filtered] + %deref1 = load %__vtable_B*, %__vtable_B** %self, align [filtered] %foo = getelementptr inbounds %__vtable_B, %__vtable_B* %deref1, i32 0, i32 1 - store i16 (%A*, i32)* @A__foo, i16 (%A*, i32)** %foo, align 8 - %deref2 = load %__vtable_B*, %__vtable_B** %self, align 8 + store i16 (%A*, i32)* @A__foo, i16 (%A*, i32)** %foo, align [filtered] + %deref2 = load %__vtable_B*, %__vtable_B** %self, align [filtered] %bar = getelementptr inbounds %__vtable_B, %__vtable_B* %deref2, i32 0, i32 2 - store void (%B*)* @B__bar, void (%B*)** %bar, align 8 + store void (%B*)* @B__bar, void (%B*)** %bar, align [filtered] ret void } define void @__init___vtable_c(%__vtable_C* %0) { entry: - %self = alloca %__vtable_C*, align 8 - store %__vtable_C* %0, %__vtable_C** %self, align 8 - %deref = load %__vtable_C*, %__vtable_C** %self, align 8 + %self = alloca %__vtable_C*, align [filtered] + store %__vtable_C* %0, %__vtable_C** %self, align [filtered] + %deref = load %__vtable_C*, %__vtable_C** %self, align [filtered] %__body = getelementptr inbounds %__vtable_C, %__vtable_C* %deref, i32 0, i32 0 - store void (%C*)* @C, void (%C*)** %__body, align 8 - %deref1 = load %__vtable_C*, %__vtable_C** %self, align 8 + store void (%C*)* @C, void (%C*)** %__body, align [filtered] + %deref1 = load %__vtable_C*, %__vtable_C** %self, align [filtered] %foo = getelementptr inbounds %__vtable_C, %__vtable_C* %deref1, i32 0, i32 1 - store i16 (%C*, i32)* @C__foo, i16 (%C*, i32)** %foo, align 8 - %deref2 = load %__vtable_C*, %__vtable_C** %self, align 8 + store i16 (%C*, i32)* @C__foo, i16 (%C*, i32)** %foo, align [filtered] + %deref2 = load %__vtable_C*, %__vtable_C** %self, align [filtered] %bar = getelementptr inbounds %__vtable_C, %__vtable_C* %deref2, i32 0, i32 2 - store void (%C*)* @C__bar, void (%C*)** %bar, align 8 + store void (%C*)* @C__bar, void (%C*)** %bar, align [filtered] ret void } define void @__init_a(%A* %0) { entry: - %self = alloca %A*, align 8 - store %A* %0, %A** %self, align 8 - %deref = load %A*, %A** %self, align 8 + %self = alloca %A*, align [filtered] + store %A* %0, %A** %self, align [filtered] + %deref = load %A*, %A** %self, align [filtered] %__vtable = getelementptr inbounds %A, %A* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_A* @__vtable_A_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_A* @__vtable_A_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_b(%B* %0) { entry: - %self = alloca %B*, align 8 - store %B* %0, %B** %self, align 8 - %deref = load %B*, %B** %self, align 8 + %self = alloca %B*, align [filtered] + store %B* %0, %B** %self, align [filtered] + %deref = load %B*, %B** %self, align [filtered] %__A = getelementptr inbounds %B, %B* %deref, i32 0, i32 0 call void @__init_a(%A* %__A) - %deref1 = load %B*, %B** %self, align 8 + %deref1 = load %B*, %B** %self, align [filtered] %__A2 = getelementptr inbounds %B, %B* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %A, %A* %__A2, i32 0, i32 0 - store i32* bitcast (%__vtable_B* @__vtable_B_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_B* @__vtable_B_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_c(%C* %0) { entry: - %self = alloca %C*, align 8 - store %C* %0, %C** %self, align 8 - %deref = load %C*, %C** %self, align 8 + %self = alloca %C*, align [filtered] + store %C* %0, %C** %self, align [filtered] + %deref = load %C*, %C** %self, align [filtered] %__A = getelementptr inbounds %C, %C* %deref, i32 0, i32 0 call void @__init_a(%A* %__A) - %deref1 = load %C*, %C** %self, align 8 + %deref1 = load %C*, %C** %self, align [filtered] %__A2 = getelementptr inbounds %C, %C* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %A, %A* %__A2, i32 0, i32 0 - store i32* bitcast (%__vtable_C* @__vtable_C_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_C* @__vtable_C_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init_C(%C* %0) { entry: - %self = alloca %C*, align 8 - store %C* %0, %C** %self, align 8 - %deref = load %C*, %C** %self, align 8 + %self = alloca %C*, align [filtered] + store %C* %0, %C** %self, align [filtered] + %deref = load %C*, %C** %self, align [filtered] %__A = getelementptr inbounds %C, %C* %deref, i32 0, i32 0 call void @__user_init_A(%A* %__A) ret void @@ -609,23 +609,23 @@ fn this_is_untouched() { define void @__user_init_A(%A* %0) { entry: - %self = alloca %A*, align 8 - store %A* %0, %A** %self, align 8 + %self = alloca %A*, align [filtered] + store %A* %0, %A** %self, align [filtered] ret void } define void @__user_init___vtable_A(%__vtable_A* %0) { entry: - %self = alloca %__vtable_A*, align 8 - store %__vtable_A* %0, %__vtable_A** %self, align 8 + %self = alloca %__vtable_A*, align [filtered] + store %__vtable_A* %0, %__vtable_A** %self, align [filtered] ret void } define void @__user_init_B(%B* %0) { entry: - %self = alloca %B*, align 8 - store %B* %0, %B** %self, align 8 - %deref = load %B*, %B** %self, align 8 + %self = alloca %B*, align [filtered] + store %B* %0, %B** %self, align [filtered] + %deref = load %B*, %B** %self, align [filtered] %__A = getelementptr inbounds %B, %B* %deref, i32 0, i32 0 call void @__user_init_A(%A* %__A) ret void @@ -633,15 +633,15 @@ fn this_is_untouched() { define void @__user_init___vtable_C(%__vtable_C* %0) { entry: - %self = alloca %__vtable_C*, align 8 - store %__vtable_C* %0, %__vtable_C** %self, align 8 + %self = alloca %__vtable_C*, align [filtered] + store %__vtable_C* %0, %__vtable_C** %self, align [filtered] ret void } define void @__user_init___vtable_B(%__vtable_B* %0) { entry: - %self = alloca %__vtable_B*, align 8 - store %__vtable_B* %0, %__vtable_B** %self, align 8 + %self = alloca %__vtable_B*, align [filtered] + store %__vtable_B* %0, %__vtable_B** %self, align [filtered] ret void } @@ -713,60 +713,60 @@ fn super_is_untouched() { define void @A(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %__vtable = getelementptr inbounds %A, %A* %0, i32 0, i32 0 ret void } define i16 @A__foo(%A* %0, i32 %1) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %__vtable = getelementptr inbounds %A, %A* %0, i32 0, i32 0 - %A.foo = alloca i16, align 2 - %in = alloca i32, align 4 - store i32 %1, i32* %in, align 4 - store i16 0, i16* %A.foo, align 2 - %A__foo_ret = load i16, i16* %A.foo, align 2 + %A.foo = alloca i16, align [filtered] + %in = alloca i32, align [filtered] + store i32 %1, i32* %in, align [filtered] + store i16 0, i16* %A.foo, align [filtered] + %A__foo_ret = load i16, i16* %A.foo, align [filtered] ret i16 %A__foo_ret } define void @A__bar(%A* %0) { entry: - %this = alloca %A*, align 8 - store %A* %0, %A** %this, align 8 + %this = alloca %A*, align [filtered] + store %A* %0, %A** %this, align [filtered] %__vtable = getelementptr inbounds %A, %A* %0, i32 0, i32 0 ret void } define void @B(%B* %0) { entry: - %this = alloca %B*, align 8 - store %B* %0, %B** %this, align 8 + %this = alloca %B*, align [filtered] + store %B* %0, %B** %this, align [filtered] %__A = getelementptr inbounds %B, %B* %0, i32 0, i32 0 ret void } define i16 @B__foo(%B* %0, i32 %1) { entry: - %this = alloca %B*, align 8 - store %B* %0, %B** %this, align 8 + %this = alloca %B*, align [filtered] + store %B* %0, %B** %this, align [filtered] %__A = getelementptr inbounds %B, %B* %0, i32 0, i32 0 - %B.foo = alloca i16, align 2 - %in = alloca i32, align 4 - store i32 %1, i32* %in, align 4 - store i16 0, i16* %B.foo, align 2 + %B.foo = alloca i16, align [filtered] + %in = alloca i32, align [filtered] + store i32 %1, i32* %in, align [filtered] + store i16 0, i16* %B.foo, align [filtered] %call = call i16 @A__foo(%A* %__A, i32 5) call void @A__bar(%A* %__A) - %B__foo_ret = load i16, i16* %B.foo, align 2 + %B__foo_ret = load i16, i16* %B.foo, align [filtered] ret i16 %B__foo_ret } define void @B__bar(%B* %0) { entry: - %this = alloca %B*, align 8 - store %B* %0, %B** %this, align 8 + %this = alloca %B*, align [filtered] + store %B* %0, %B** %this, align [filtered] %__A = getelementptr inbounds %B, %B* %0, i32 0, i32 0 %call = call i16 @A__foo(%A* %__A, i32 5) call void @A__bar(%A* %__A) @@ -775,72 +775,72 @@ fn super_is_untouched() { define void @__init___vtable_a(%__vtable_A* %0) { entry: - %self = alloca %__vtable_A*, align 8 - store %__vtable_A* %0, %__vtable_A** %self, align 8 - %deref = load %__vtable_A*, %__vtable_A** %self, align 8 + %self = alloca %__vtable_A*, align [filtered] + store %__vtable_A* %0, %__vtable_A** %self, align [filtered] + %deref = load %__vtable_A*, %__vtable_A** %self, align [filtered] %__body = getelementptr inbounds %__vtable_A, %__vtable_A* %deref, i32 0, i32 0 - store void (%A*)* @A, void (%A*)** %__body, align 8 - %deref1 = load %__vtable_A*, %__vtable_A** %self, align 8 + store void (%A*)* @A, void (%A*)** %__body, align [filtered] + %deref1 = load %__vtable_A*, %__vtable_A** %self, align [filtered] %foo = getelementptr inbounds %__vtable_A, %__vtable_A* %deref1, i32 0, i32 1 - store i16 (%A*, i32)* @A__foo, i16 (%A*, i32)** %foo, align 8 - %deref2 = load %__vtable_A*, %__vtable_A** %self, align 8 + store i16 (%A*, i32)* @A__foo, i16 (%A*, i32)** %foo, align [filtered] + %deref2 = load %__vtable_A*, %__vtable_A** %self, align [filtered] %bar = getelementptr inbounds %__vtable_A, %__vtable_A* %deref2, i32 0, i32 2 - store void (%A*)* @A__bar, void (%A*)** %bar, align 8 + store void (%A*)* @A__bar, void (%A*)** %bar, align [filtered] ret void } define void @__init___vtable_b(%__vtable_B* %0) { entry: - %self = alloca %__vtable_B*, align 8 - store %__vtable_B* %0, %__vtable_B** %self, align 8 - %deref = load %__vtable_B*, %__vtable_B** %self, align 8 + %self = alloca %__vtable_B*, align [filtered] + store %__vtable_B* %0, %__vtable_B** %self, align [filtered] + %deref = load %__vtable_B*, %__vtable_B** %self, align [filtered] %__body = getelementptr inbounds %__vtable_B, %__vtable_B* %deref, i32 0, i32 0 - store void (%B*)* @B, void (%B*)** %__body, align 8 - %deref1 = load %__vtable_B*, %__vtable_B** %self, align 8 + store void (%B*)* @B, void (%B*)** %__body, align [filtered] + %deref1 = load %__vtable_B*, %__vtable_B** %self, align [filtered] %foo = getelementptr inbounds %__vtable_B, %__vtable_B* %deref1, i32 0, i32 1 - store i16 (%B*, i32)* @B__foo, i16 (%B*, i32)** %foo, align 8 - %deref2 = load %__vtable_B*, %__vtable_B** %self, align 8 + store i16 (%B*, i32)* @B__foo, i16 (%B*, i32)** %foo, align [filtered] + %deref2 = load %__vtable_B*, %__vtable_B** %self, align [filtered] %bar = getelementptr inbounds %__vtable_B, %__vtable_B* %deref2, i32 0, i32 2 - store void (%B*)* @B__bar, void (%B*)** %bar, align 8 + store void (%B*)* @B__bar, void (%B*)** %bar, align [filtered] ret void } define void @__init_a(%A* %0) { entry: - %self = alloca %A*, align 8 - store %A* %0, %A** %self, align 8 - %deref = load %A*, %A** %self, align 8 + %self = alloca %A*, align [filtered] + store %A* %0, %A** %self, align [filtered] + %deref = load %A*, %A** %self, align [filtered] %__vtable = getelementptr inbounds %A, %A* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_A* @__vtable_A_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_A* @__vtable_A_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_b(%B* %0) { entry: - %self = alloca %B*, align 8 - store %B* %0, %B** %self, align 8 - %deref = load %B*, %B** %self, align 8 + %self = alloca %B*, align [filtered] + store %B* %0, %B** %self, align [filtered] + %deref = load %B*, %B** %self, align [filtered] %__A = getelementptr inbounds %B, %B* %deref, i32 0, i32 0 call void @__init_a(%A* %__A) - %deref1 = load %B*, %B** %self, align 8 + %deref1 = load %B*, %B** %self, align [filtered] %__A2 = getelementptr inbounds %B, %B* %deref1, i32 0, i32 0 %__vtable = getelementptr inbounds %A, %A* %__A2, i32 0, i32 0 - store i32* bitcast (%__vtable_B* @__vtable_B_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_B* @__vtable_B_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_A(%__vtable_A* %0) { entry: - %self = alloca %__vtable_A*, align 8 - store %__vtable_A* %0, %__vtable_A** %self, align 8 + %self = alloca %__vtable_A*, align [filtered] + store %__vtable_A* %0, %__vtable_A** %self, align [filtered] ret void } define void @__user_init_B(%B* %0) { entry: - %self = alloca %B*, align 8 - store %B* %0, %B** %self, align 8 - %deref = load %B*, %B** %self, align 8 + %self = alloca %B*, align [filtered] + store %B* %0, %B** %self, align [filtered] + %deref = load %B*, %B** %self, align [filtered] %__A = getelementptr inbounds %B, %B* %deref, i32 0, i32 0 call void @__user_init_A(%A* %__A) ret void @@ -848,15 +848,15 @@ fn super_is_untouched() { define void @__user_init_A(%A* %0) { entry: - %self = alloca %A*, align 8 - store %A* %0, %A** %self, align 8 + %self = alloca %A*, align [filtered] + store %A* %0, %A** %self, align [filtered] ret void } define void @__user_init___vtable_B(%__vtable_B* %0) { entry: - %self = alloca %__vtable_B*, align 8 - store %__vtable_B* %0, %__vtable_B** %self, align 8 + %self = alloca %__vtable_B*, align [filtered] + store %__vtable_B* %0, %__vtable_B** %self, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__accessing_nested_array_in_struct.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__accessing_nested_array_in_struct.snap index d322e874d59..158d3afcc2a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__accessing_nested_array_in_struct.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__accessing_nested_array_in_struct.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -19,6 +18,6 @@ entry: %m = getelementptr inbounds %Main, %Main* %0, i32 0, i32 0 %field1 = getelementptr inbounds %MyStruct, %MyStruct* %m, i32 0, i32 0 %tmpVar = getelementptr inbounds [5 x i16], [5 x i16]* %field1, i32 0, i32 3 - store i16 7, i16* %tmpVar, align 2 + store i16 7, i16* %tmpVar, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__accessing_nested_structs.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__accessing_nested_structs.snap index 4fc4cbccf06..3c702ae3d24 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__accessing_nested_structs.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__accessing_nested_structs.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -21,9 +20,9 @@ entry: %m = getelementptr inbounds %Main, %Main* %0, i32 0, i32 0 %out1 = getelementptr inbounds %OuterStruct, %OuterStruct* %m, i32 0, i32 0 %inner1 = getelementptr inbounds %InnerStruct, %InnerStruct* %out1, i32 0, i32 0 - store i16 3, i16* %inner1, align 2 + store i16 3, i16* %inner1, align [filtered] %out2 = getelementptr inbounds %OuterStruct, %OuterStruct* %m, i32 0, i32 1 %inner2 = getelementptr inbounds %InnerStruct, %InnerStruct* %out2, i32 0, i32 1 - store i16 7, i16* %inner2, align 2 + store i16 7, i16* %inner2, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__action_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__action_called_in_program.snap index b4a1de72867..38f1ca4c2d4 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__action_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__action_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -22,6 +21,6 @@ entry: define void @prg__foo(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 2, i32* %x, align 4 + store i32 2, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_used.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_used.snap index 68e5d47ca1b..dcc1876cf09 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_used.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_used.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,11 +15,11 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %tmpVar = getelementptr inbounds [4 x i32], [4 x i32]* %x, i32 0, i32 1 - store i32 3, i32* %tmpVar, align 4 + store i32 3, i32* %tmpVar, align [filtered] %tmpVar1 = getelementptr inbounds [4 x i32], [4 x i32]* %x, i32 0, i32 2 %tmpVar2 = getelementptr inbounds [4 x i32], [4 x i32]* %x, i32 0, i32 3 - %load_tmpVar = load i32, i32* %tmpVar2, align 4 + %load_tmpVar = load i32, i32* %tmpVar2, align [filtered] %tmpVar3 = add i32 %load_tmpVar, 3 - store i32 %tmpVar3, i32* %tmpVar1, align 4 + store i32 %tmpVar3, i32* %tmpVar1, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_with_non_zero_negative_start_used.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_with_non_zero_negative_start_used.snap index 016d218b00f..11571783dd9 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_with_non_zero_negative_start_used.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_with_non_zero_negative_start_used.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,11 +15,11 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %tmpVar = getelementptr inbounds [6 x i32], [6 x i32]* %x, i32 0, i32 1 - store i32 3, i32* %tmpVar, align 4 + store i32 3, i32* %tmpVar, align [filtered] %tmpVar1 = getelementptr inbounds [6 x i32], [6 x i32]* %x, i32 0, i32 4 %tmpVar2 = getelementptr inbounds [6 x i32], [6 x i32]* %x, i32 0, i32 5 - %load_tmpVar = load i32, i32* %tmpVar2, align 4 + %load_tmpVar = load i32, i32* %tmpVar2, align [filtered] %tmpVar3 = add i32 %load_tmpVar, 3 - store i32 %tmpVar3, i32* %tmpVar1, align 4 + store i32 %tmpVar3, i32* %tmpVar1, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_with_non_zero_start_used.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_with_non_zero_start_used.snap index aa1a2db3869..0d21ee4253b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_with_non_zero_start_used.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__array_of_int_type_with_non_zero_start_used.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,11 +15,11 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %tmpVar = getelementptr inbounds [3 x i32], [3 x i32]* %x, i32 0, i32 0 - store i32 3, i32* %tmpVar, align 4 + store i32 3, i32* %tmpVar, align [filtered] %tmpVar1 = getelementptr inbounds [3 x i32], [3 x i32]* %x, i32 0, i32 1 %tmpVar2 = getelementptr inbounds [3 x i32], [3 x i32]* %x, i32 0, i32 2 - %load_tmpVar = load i32, i32* %tmpVar2, align 4 + %load_tmpVar = load i32, i32* %tmpVar2, align [filtered] %tmpVar3 = add i32 %load_tmpVar, 3 - store i32 %tmpVar3, i32* %tmpVar1, align 4 + store i32 %tmpVar3, i32* %tmpVar1, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_constant_expressions_in_case_selectors.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_constant_expressions_in_case_selectors.snap index c3a2b2845fa..1aabf1c2133 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_constant_expressions_in_case_selectors.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_constant_expressions_in_case_selectors.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,15 +13,15 @@ target triple = "[filtered]" define i32 @drive() { entry: - %drive = alloca i32, align 4 - %input = alloca i32, align 4 - %horiz = alloca i32, align 4 - %depth = alloca i32, align 4 - store i32 0, i32* %input, align 4 - store i32 0, i32* %horiz, align 4 - store i32 0, i32* %depth, align 4 - store i32 0, i32* %drive, align 4 - %load_input = load i32, i32* %input, align 4 + %drive = alloca i32, align [filtered] + %input = alloca i32, align [filtered] + %horiz = alloca i32, align [filtered] + %depth = alloca i32, align [filtered] + store i32 0, i32* %input, align [filtered] + store i32 0, i32* %horiz, align [filtered] + store i32 0, i32* %depth, align [filtered] + store i32 0, i32* %drive, align [filtered] + %load_input = load i32, i32* %input, align [filtered] switch i32 %load_input, label %else [ i32 7, label %case i32 14, label %case1 @@ -31,33 +30,33 @@ entry: ] case: ; preds = %entry - %load_horiz = load i32, i32* %horiz, align 4 + %load_horiz = load i32, i32* %horiz, align [filtered] %tmpVar = add i32 %load_horiz, 1 - store i32 %tmpVar, i32* %horiz, align 4 + store i32 %tmpVar, i32* %horiz, align [filtered] br label %continue case1: ; preds = %entry - %load_horiz2 = load i32, i32* %horiz, align 4 + %load_horiz2 = load i32, i32* %horiz, align [filtered] %tmpVar3 = add i32 %load_horiz2, 2 - store i32 %tmpVar3, i32* %horiz, align 4 + store i32 %tmpVar3, i32* %horiz, align [filtered] br label %continue case4: ; preds = %entry - %load_depth = load i32, i32* %depth, align 4 + %load_depth = load i32, i32* %depth, align [filtered] %tmpVar5 = sub i32 %load_depth, 1 - store i32 %tmpVar5, i32* %depth, align 4 + store i32 %tmpVar5, i32* %depth, align [filtered] br label %continue case6: ; preds = %entry - %load_depth7 = load i32, i32* %depth, align 4 + %load_depth7 = load i32, i32* %depth, align [filtered] %tmpVar8 = add i32 %load_depth7, 1 - store i32 %tmpVar8, i32* %depth, align 4 + store i32 %tmpVar8, i32* %depth, align [filtered] br label %continue else: ; preds = %entry br label %continue continue: ; preds = %else, %case6, %case4, %case1, %case - %drive_ret = load i32, i32* %drive, align 4 + %drive_ret = load i32, i32* %drive, align [filtered] ret i32 %drive_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_enum_expressions_in_case_selectors.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_enum_expressions_in_case_selectors.snap index a44fd34479f..659e8003928 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_enum_expressions_in_case_selectors.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_enum_expressions_in_case_selectors.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,15 +14,15 @@ target triple = "[filtered]" define i32 @drive() { entry: - %drive = alloca i32, align 4 - %input = alloca i32, align 4 - %horiz = alloca i32, align 4 - %depth = alloca i32, align 4 - store i32 0, i32* %input, align 4 - store i32 0, i32* %horiz, align 4 - store i32 0, i32* %depth, align 4 - store i32 0, i32* %drive, align 4 - %load_input = load i32, i32* %input, align 4 + %drive = alloca i32, align [filtered] + %input = alloca i32, align [filtered] + %horiz = alloca i32, align [filtered] + %depth = alloca i32, align [filtered] + store i32 0, i32* %input, align [filtered] + store i32 0, i32* %horiz, align [filtered] + store i32 0, i32* %depth, align [filtered] + store i32 0, i32* %drive, align [filtered] + %load_input = load i32, i32* %input, align [filtered] switch i32 %load_input, label %else [ i32 7, label %case i32 14, label %case1 @@ -32,33 +31,33 @@ entry: ] case: ; preds = %entry - %load_horiz = load i32, i32* %horiz, align 4 + %load_horiz = load i32, i32* %horiz, align [filtered] %tmpVar = add i32 %load_horiz, 1 - store i32 %tmpVar, i32* %horiz, align 4 + store i32 %tmpVar, i32* %horiz, align [filtered] br label %continue case1: ; preds = %entry - %load_horiz2 = load i32, i32* %horiz, align 4 + %load_horiz2 = load i32, i32* %horiz, align [filtered] %tmpVar3 = add i32 %load_horiz2, 2 - store i32 %tmpVar3, i32* %horiz, align 4 + store i32 %tmpVar3, i32* %horiz, align [filtered] br label %continue case4: ; preds = %entry - %load_depth = load i32, i32* %depth, align 4 + %load_depth = load i32, i32* %depth, align [filtered] %tmpVar5 = sub i32 %load_depth, 1 - store i32 %tmpVar5, i32* %depth, align 4 + store i32 %tmpVar5, i32* %depth, align [filtered] br label %continue case6: ; preds = %entry - %load_depth7 = load i32, i32* %depth, align 4 + %load_depth7 = load i32, i32* %depth, align [filtered] %tmpVar8 = add i32 %load_depth7, 1 - store i32 %tmpVar8, i32* %depth, align 4 + store i32 %tmpVar8, i32* %depth, align [filtered] br label %continue else: ; preds = %entry br label %continue continue: ; preds = %else, %case6, %case4, %case1, %case - %drive_ret = load i32, i32* %drive, align 4 + %drive_ret = load i32, i32* %drive, align [filtered] ret i32 %drive_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_multiple_labels_statement.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_multiple_labels_statement.snap index c9f4edd47f5..4ede49f9abb 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_multiple_labels_statement.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_multiple_labels_statement.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,7 +15,7 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] switch i32 %load_x, label %else [ i32 1, label %case i32 2, label %case @@ -25,15 +24,15 @@ entry: ] case: ; preds = %entry, %entry - store i32 1, i32* %y, align 4 + store i32 1, i32* %y, align [filtered] br label %continue case1: ; preds = %entry, %entry - store i32 2, i32* %y, align 4 + store i32 2, i32* %y, align [filtered] br label %continue else: ; preds = %entry - store i32 -1, i32* %y, align 4 + store i32 -1, i32* %y, align [filtered] br label %continue continue: ; preds = %else, %case1, %case diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_ranges_statement.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_ranges_statement.snap index f9e3ecae343..d4e87e101f3 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_ranges_statement.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__case_with_ranges_statement.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,21 +15,21 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] switch i32 %load_x, label %else [ ] case: ; preds = %range_then - store i32 2, i32* %y, align 4 + store i32 2, i32* %y, align [filtered] br label %continue else: ; preds = %entry - %load_x1 = load i32, i32* %x, align 4 + %load_x1 = load i32, i32* %x, align [filtered] %tmpVar = icmp sge i32 %load_x1, 2 br i1 %tmpVar, label %range_then, label %range_else range_then: ; preds = %else - %load_x2 = load i32, i32* %x, align 4 + %load_x2 = load i32, i32* %x, align [filtered] %tmpVar3 = icmp sle i32 %load_x2, 3 br i1 %tmpVar3, label %case, label %range_else diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_bool_code_gen_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_bool_code_gen_test.snap index ddda0d7b319..40aa080f680 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_bool_code_gen_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_bool_code_gen_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,9 +14,9 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i8 1, i8* %z, align 1 - store i8 0, i8* %z, align 1 - store i8 1, i8* %z, align 1 - store i8 0, i8* %z, align 1 + store i8 1, i8* %z, align [filtered] + store i8 0, i8* %z, align [filtered] + store i8 1, i8* %z, align [filtered] + store i8 0, i8* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_code_gen_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_code_gen_test.snap index 1925655b163..4ed774326c9 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_code_gen_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_code_gen_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,10 +15,10 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i16, i16* %x, align 2 + %load_x = load i16, i16* %x, align [filtered] %1 = sext i16 %load_x to i32 %tmpVar = add i32 %1, 7 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %z, align 2 + store i16 %2, i16* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_hex_code_gen_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_hex_code_gen_test.snap index 895a6806b35..a1bc9fb267d 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_hex_code_gen_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_hex_code_gen_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,10 +15,10 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i16, i16* %x, align 2 + %load_x = load i16, i16* %x, align [filtered] %1 = sext i16 %load_x to i32 %tmpVar = add i32 %1, 13 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %z, align 2 + store i16 %2, i16* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_hex_ints_code_gen_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_hex_ints_code_gen_test.snap index 0cb3affb82d..652515df223 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_hex_ints_code_gen_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_hex_ints_code_gen_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,7 +14,7 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 -1, i32* %x, align 4 - store i32 65535, i32* %x, align 4 + store i32 -1, i32* %x, align [filtered] + store i32 65535, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_lreal_code_gen_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_lreal_code_gen_test.snap index 6012a2a7c8b..f1c964b80f0 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_lreal_code_gen_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_lreal_code_gen_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,10 +15,10 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load float, float* %x, align 4 + %load_x = load float, float* %x, align [filtered] %1 = fpext float %load_x to double %tmpVar = fadd double %1, 7.700000e+00 %2 = fptrunc double %tmpVar to float - store float %2, float* %z, align 4 + store float %2, float* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_real_code_gen_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_real_code_gen_test.snap index 838eecf906d..f63025d2f59 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_real_code_gen_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__casted_literals_real_code_gen_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,9 +15,9 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i16, i16* %x, align 2 + %load_x = load i16, i16* %x, align [filtered] %1 = sitofp i16 %load_x to float %tmpVar = fdiv float %1, 7.000000e+00 - store float %tmpVar, float* %z, align 4 + store float %tmpVar, float* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__class_member_access_from_method.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__class_member_access_from_method.snap index eaad2331741..128e6b14b0b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__class_member_access_from_method.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__class_member_access_from_method.snap @@ -22,17 +22,17 @@ define void @MyClass__testMethod(%MyClass* %0, i16 %1) { entry: %x = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 0 %y = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 1 - %myMethodArg = alloca i16, align 2 - store i16 %1, i16* %myMethodArg, align 2 - %myMethodLocalVar = alloca i16, align 2 - store i16 0, i16* %myMethodLocalVar, align 2 - %load_myMethodArg = load i16, i16* %myMethodArg, align 2 - store i16 %load_myMethodArg, i16* %x, align 2 - %load_x = load i16, i16* %x, align 2 - store i16 %load_x, i16* %y, align 2 - %load_myMethodLocalVar = load i16, i16* %myMethodLocalVar, align 2 + %myMethodArg = alloca i16, align [filtered] + store i16 %1, i16* %myMethodArg, align [filtered] + %myMethodLocalVar = alloca i16, align [filtered] + store i16 0, i16* %myMethodLocalVar, align [filtered] + %load_myMethodArg = load i16, i16* %myMethodArg, align [filtered] + store i16 %load_myMethodArg, i16* %x, align [filtered] + %load_x = load i16, i16* %x, align [filtered] + store i16 %load_x, i16* %y, align [filtered] + %load_myMethodLocalVar = load i16, i16* %myMethodLocalVar, align [filtered] %2 = sext i16 %load_myMethodLocalVar to i32 - %load_y = load i16, i16* %y, align 2 + %load_y = load i16, i16* %y, align [filtered] %3 = sext i16 %load_y to i32 %tmpVar = icmp eq i32 %2, %3 ret void diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__class_method_in_pou.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__class_method_in_pou.snap index cd287725b27..3fdab6cb8f1 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__class_method_in_pou.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__class_method_in_pou.snap @@ -24,17 +24,17 @@ define void @MyClass__testMethod(%MyClass* %0, i16 %1) { entry: %x = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 0 %y = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 1 - %myMethodArg = alloca i16, align 2 - store i16 %1, i16* %myMethodArg, align 2 - %myMethodLocalVar = alloca i16, align 2 - store i16 0, i16* %myMethodLocalVar, align 2 - %load_myMethodArg = load i16, i16* %myMethodArg, align 2 - store i16 %load_myMethodArg, i16* %x, align 2 - %load_x = load i16, i16* %x, align 2 - store i16 %load_x, i16* %y, align 2 - %load_myMethodLocalVar = load i16, i16* %myMethodLocalVar, align 2 + %myMethodArg = alloca i16, align [filtered] + store i16 %1, i16* %myMethodArg, align [filtered] + %myMethodLocalVar = alloca i16, align [filtered] + store i16 0, i16* %myMethodLocalVar, align [filtered] + %load_myMethodArg = load i16, i16* %myMethodArg, align [filtered] + store i16 %load_myMethodArg, i16* %x, align [filtered] + %load_x = load i16, i16* %x, align [filtered] + store i16 %load_x, i16* %y, align [filtered] + %load_myMethodLocalVar = load i16, i16* %myMethodLocalVar, align [filtered] %2 = sext i16 %load_myMethodLocalVar to i32 - %load_y = load i16, i16* %y, align 2 + %load_y = load i16, i16* %y, align [filtered] %3 = sext i16 %load_y to i32 %tmpVar = icmp eq i32 %2, %3 ret void @@ -45,11 +45,11 @@ entry: %cl = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %x1 = getelementptr inbounds %MyClass, %MyClass* %cl, i32 0, i32 0 - %load_x = load i16, i16* %x1, align 2 - store i16 %load_x, i16* %x, align 2 - %load_x2 = load i16, i16* %x, align 2 + %load_x = load i16, i16* %x1, align [filtered] + store i16 %load_x, i16* %x, align [filtered] + %load_x2 = load i16, i16* %x, align [filtered] call void @MyClass__testMethod(%MyClass* %cl, i16 %load_x2) - %load_x3 = load i16, i16* %x, align 2 + %load_x3 = load i16, i16* %x, align [filtered] call void @MyClass__testMethod(%MyClass* %cl, i16 %load_x3) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__complex_pointers.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__complex_pointers.snap index 195ed8a2dba..b0fd9d27bbf 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__complex_pointers.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__complex_pointers.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -19,29 +18,29 @@ entry: %arrrX = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %rarrX = getelementptr inbounds %prg, %prg* %0, i32 0, i32 3 %tmpVar = getelementptr inbounds [10 x i16], [10 x i16]* %arrX, i32 0, i32 0 - %load_X = load i16, i16* %X, align 2 - store i16 %load_X, i16* %tmpVar, align 2 + %load_X = load i16, i16* %X, align [filtered] + store i16 %load_X, i16* %tmpVar, align [filtered] %tmpVar1 = getelementptr inbounds [10 x i16*], [10 x i16*]* %arrrX, i32 0, i32 1 %tmpVar2 = getelementptr inbounds [10 x i16], [10 x i16]* %arrX, i32 0, i32 2 - store i16* %tmpVar2, i16** %tmpVar1, align 8 - store [10 x i16]* %arrX, [10 x i16]** %rarrX, align 8 + store i16* %tmpVar2, i16** %tmpVar1, align [filtered] + store [10 x i16]* %arrX, [10 x i16]** %rarrX, align [filtered] %tmpVar3 = getelementptr inbounds [10 x i16*], [10 x i16*]* %arrrX, i32 0, i32 3 - %deref = load i16*, i16** %tmpVar3, align 8 - %load_tmpVar = load i16, i16* %deref, align 2 - store i16 %load_tmpVar, i16* %X, align 2 - %deref4 = load [10 x i16]*, [10 x i16]** %rarrX, align 8 + %deref = load i16*, i16** %tmpVar3, align [filtered] + %load_tmpVar = load i16, i16* %deref, align [filtered] + store i16 %load_tmpVar, i16* %X, align [filtered] + %deref4 = load [10 x i16]*, [10 x i16]** %rarrX, align [filtered] %tmpVar5 = getelementptr inbounds [10 x i16], [10 x i16]* %deref4, i32 0, i32 4 - %load_tmpVar6 = load i16, i16* %tmpVar5, align 2 - store i16 %load_tmpVar6, i16* %X, align 2 + %load_tmpVar6 = load i16, i16* %tmpVar5, align [filtered] + store i16 %load_tmpVar6, i16* %X, align [filtered] %tmpVar7 = getelementptr inbounds [10 x i16*], [10 x i16*]* %arrrX, i32 0, i32 5 - %deref8 = load i16*, i16** %tmpVar7, align 8 - %load_X9 = load i16, i16* %X, align 2 - store i16 %load_X9, i16* %deref8, align 2 - %deref10 = load [10 x i16]*, [10 x i16]** %rarrX, align 8 + %deref8 = load i16*, i16** %tmpVar7, align [filtered] + %load_X9 = load i16, i16* %X, align [filtered] + store i16 %load_X9, i16* %deref8, align [filtered] + %deref10 = load [10 x i16]*, [10 x i16]** %rarrX, align [filtered] %tmpVar11 = getelementptr inbounds [10 x i16], [10 x i16]* %deref10, i32 0, i32 6 %tmpVar12 = getelementptr inbounds [10 x i16*], [10 x i16*]* %arrrX, i32 0, i32 7 - %deref13 = load i16*, i16** %tmpVar12, align 8 - %load_tmpVar14 = load i16, i16* %deref13, align 2 - store i16 %load_tmpVar14, i16* %tmpVar11, align 2 + %deref13 = load i16*, i16** %tmpVar12, align [filtered] + %load_tmpVar14 = load i16, i16* %deref13, align [filtered] + store i16 %load_tmpVar14, i16* %tmpVar11, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_expression_in_function_blocks_are_propagated.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_expression_in_function_blocks_are_propagated.snap index e9258fc8939..de8d6cf04b4 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_expression_in_function_blocks_are_propagated.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_expression_in_function_blocks_are_propagated.snap @@ -13,10 +13,10 @@ target triple = "[filtered]" define void @fbWithConstant(%fbWithConstant* %0) { entry: - %this = alloca %fbWithConstant*, align 8 - store %fbWithConstant* %0, %fbWithConstant** %this, align 8 + %this = alloca %fbWithConstant*, align [filtered] + store %fbWithConstant* %0, %fbWithConstant** %this, align [filtered] %x = getelementptr inbounds %fbWithConstant, %fbWithConstant* %0, i32 0, i32 0 %const = getelementptr inbounds %fbWithConstant, %fbWithConstant* %0, i32 0, i32 1 - store i16 2, i16* %x, align 2 + store i16 2, i16* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_expressions_in_ranged_type_declaration_are_propagated.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_expressions_in_ranged_type_declaration_are_propagated.snap index bbfcd2c2b27..ad699d2987a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_expressions_in_ranged_type_declaration_are_propagated.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_expressions_in_ranged_type_declaration_are_propagated.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,17 +14,17 @@ target triple = "[filtered]" define i16 @CheckRangeSigned(i16 %0, i16 %1, i16 %2) { entry: - %CheckRangeSigned = alloca i16, align 2 - %value = alloca i16, align 2 - store i16 %0, i16* %value, align 2 - %lower = alloca i16, align 2 - store i16 %1, i16* %lower, align 2 - %upper = alloca i16, align 2 - store i16 %2, i16* %upper, align 2 - store i16 0, i16* %CheckRangeSigned, align 2 - %load_value = load i16, i16* %value, align 2 - store i16 %load_value, i16* %CheckRangeSigned, align 2 - %CheckRangeSigned_ret = load i16, i16* %CheckRangeSigned, align 2 + %CheckRangeSigned = alloca i16, align [filtered] + %value = alloca i16, align [filtered] + store i16 %0, i16* %value, align [filtered] + %lower = alloca i16, align [filtered] + store i16 %1, i16* %lower, align [filtered] + %upper = alloca i16, align [filtered] + store i16 %2, i16* %upper, align [filtered] + store i16 0, i16* %CheckRangeSigned, align [filtered] + %load_value = load i16, i16* %value, align [filtered] + store i16 %load_value, i16* %CheckRangeSigned, align [filtered] + %CheckRangeSigned_ret = load i16, i16* %CheckRangeSigned, align [filtered] ret i16 %CheckRangeSigned_ret } @@ -33,6 +32,6 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %call = call i16 @CheckRangeSigned(i16 5, i16 0, i16 8) - store i16 %call, i16* %x, align 2 + store i16 %call, i16* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_propagation_of_struct_fields_on_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_propagation_of_struct_fields_on_assignment.snap index 05ef5080506..496957d0302 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_propagation_of_struct_fields_on_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__constant_propagation_of_struct_fields_on_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,12 +14,12 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %local_value = alloca i32, align 4 - store i32 0, i32* %local_value, align 4 - store i32 0, i32* %main, align 4 - %load_value = load i32, i32* getelementptr inbounds (%STRUCT1, %STRUCT1* @MyStruct, i32 0, i32 0), align 4 - store i32 %load_value, i32* %local_value, align 4 - %main_ret = load i32, i32* %main, align 4 + %main = alloca i32, align [filtered] + %local_value = alloca i32, align [filtered] + store i32 0, i32* %local_value, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_value = load i32, i32* getelementptr inbounds (%STRUCT1, %STRUCT1* @MyStruct, i32 0, i32 0), align [filtered] + store i32 %load_value, i32* %local_value, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__contants_in_case_statements_resolved.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__contants_in_case_statements_resolved.snap index dd70063f19a..788a6e4e20b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__contants_in_case_statements_resolved.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__contants_in_case_statements_resolved.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,40 +15,40 @@ define void @main(%main* %0) { entry: %DAYS_IN_MONTH = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %SIXTY = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - %load_DAYS_IN_MONTH = load i32, i32* %DAYS_IN_MONTH, align 4 + %load_DAYS_IN_MONTH = load i32, i32* %DAYS_IN_MONTH, align [filtered] switch i32 %load_DAYS_IN_MONTH, label %else [ ] case: ; preds = %range_then - store i32 29, i32* %DAYS_IN_MONTH, align 4 + store i32 29, i32* %DAYS_IN_MONTH, align [filtered] br label %continue case4: ; preds = %range_then5 - store i32 30, i32* %DAYS_IN_MONTH, align 4 + store i32 30, i32* %DAYS_IN_MONTH, align [filtered] br label %continue else: ; preds = %entry - %load_DAYS_IN_MONTH1 = load i32, i32* %DAYS_IN_MONTH, align 4 + %load_DAYS_IN_MONTH1 = load i32, i32* %DAYS_IN_MONTH, align [filtered] %tmpVar = icmp sge i32 %load_DAYS_IN_MONTH1, 32 br i1 %tmpVar, label %range_then, label %range_else range_then: ; preds = %else - %load_DAYS_IN_MONTH2 = load i32, i32* %DAYS_IN_MONTH, align 4 + %load_DAYS_IN_MONTH2 = load i32, i32* %DAYS_IN_MONTH, align [filtered] %tmpVar3 = icmp sle i32 %load_DAYS_IN_MONTH2, 60 br i1 %tmpVar3, label %case, label %range_else range_else: ; preds = %range_then, %else - %load_DAYS_IN_MONTH7 = load i32, i32* %DAYS_IN_MONTH, align 4 + %load_DAYS_IN_MONTH7 = load i32, i32* %DAYS_IN_MONTH, align [filtered] %tmpVar8 = icmp sge i32 %load_DAYS_IN_MONTH7, 62 br i1 %tmpVar8, label %range_then5, label %range_else6 range_then5: ; preds = %range_else - %load_DAYS_IN_MONTH9 = load i32, i32* %DAYS_IN_MONTH, align 4 + %load_DAYS_IN_MONTH9 = load i32, i32* %DAYS_IN_MONTH, align [filtered] %tmpVar10 = icmp sle i32 %load_DAYS_IN_MONTH9, 70 br i1 %tmpVar10, label %case4, label %range_else6 range_else6: ; preds = %range_then5, %range_else - store i32 31, i32* %DAYS_IN_MONTH, align 4 + store i32 31, i32* %DAYS_IN_MONTH, align [filtered] br label %continue continue: ; preds = %range_else6, %case4, %case diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_and_time_addition_in_var_output.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_and_time_addition_in_var_output.snap index fc50d9d1cd3..84546c50f11 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_and_time_addition_in_var_output.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_and_time_addition_in_var_output.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,19 +9,19 @@ target triple = "[filtered]" define i32 @func(i64* %0, i64* %1) { entry: - %func = alloca i32, align 4 - %d_and_t = alloca i64*, align 8 - store i64* %0, i64** %d_and_t, align 8 - %time_var = alloca i64*, align 8 - store i64* %1, i64** %time_var, align 8 - store i32 0, i32* %func, align 4 - %deref = load i64*, i64** %d_and_t, align 8 - %deref1 = load i64*, i64** %d_and_t, align 8 - %load_d_and_t = load i64, i64* %deref1, align 8 - %deref2 = load i64*, i64** %time_var, align 8 - %load_time_var = load i64, i64* %deref2, align 8 + %func = alloca i32, align [filtered] + %d_and_t = alloca i64*, align [filtered] + store i64* %0, i64** %d_and_t, align [filtered] + %time_var = alloca i64*, align [filtered] + store i64* %1, i64** %time_var, align [filtered] + store i32 0, i32* %func, align [filtered] + %deref = load i64*, i64** %d_and_t, align [filtered] + %deref1 = load i64*, i64** %d_and_t, align [filtered] + %load_d_and_t = load i64, i64* %deref1, align [filtered] + %deref2 = load i64*, i64** %time_var, align [filtered] + %load_time_var = load i64, i64* %deref2, align [filtered] %tmpVar = add i64 %load_d_and_t, %load_time_var - store i64 %tmpVar, i64* %deref, align 8 - %func_ret = load i32, i32* %func, align 4 + store i64 %tmpVar, i64* %deref, align [filtered] + %func_ret = load i32, i32* %func, align [filtered] ret i32 %func_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_and_time_global_constants_initialize.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_and_time_global_constants_initialize.snap index 544b86feb71..363905fbd2e 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_and_time_global_constants_initialize.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_and_time_global_constants_initialize.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -30,53 +29,53 @@ target triple = "[filtered]" define void @main(%main* %0) { entry: - %t1 = alloca i64, align 8 - %t2 = alloca i64, align 8 - %lt1 = alloca i64, align 8 - %lt2 = alloca i64, align 8 - %d1 = alloca i64, align 8 - %d2 = alloca i64, align 8 - %ld1 = alloca i64, align 8 - %ld2 = alloca i64, align 8 - %tod1 = alloca i64, align 8 - %tod2 = alloca i64, align 8 - %ltod1 = alloca i64, align 8 - %ltod2 = alloca i64, align 8 - %dt1 = alloca i64, align 8 - %dt2 = alloca i64, align 8 - %ldt1 = alloca i64, align 8 - %ldt2 = alloca i64, align 8 - store i64 0, i64* %t1, align 8 - store i64 0, i64* %t2, align 8 - store i64 0, i64* %lt1, align 8 - store i64 0, i64* %lt2, align 8 - store i64 0, i64* %d1, align 8 - store i64 0, i64* %d2, align 8 - store i64 0, i64* %ld1, align 8 - store i64 0, i64* %ld2, align 8 - store i64 0, i64* %tod1, align 8 - store i64 0, i64* %tod2, align 8 - store i64 0, i64* %ltod1, align 8 - store i64 0, i64* %ltod2, align 8 - store i64 0, i64* %dt1, align 8 - store i64 0, i64* %dt2, align 8 - store i64 0, i64* %ldt1, align 8 - store i64 0, i64* %ldt2, align 8 - store i64 1000000000, i64* %t1, align 8 - store i64 1000000000, i64* %t2, align 8 - store i64 1000000000000, i64* %lt1, align 8 - store i64 1000000000000, i64* %lt2, align 8 - store i64 0, i64* %d1, align 8 - store i64 161308800000000000, i64* %d2, align 8 - store i64 161308800000000000, i64* %ld1, align 8 - store i64 161308800000000000, i64* %ld2, align 8 - store i64 0, i64* %tod1, align 8 - store i64 0, i64* %tod2, align 8 - store i64 86399999999999, i64* %ltod1, align 8 - store i64 86399999999999, i64* %ltod2, align 8 - store i64 172799000000000, i64* %dt1, align 8 - store i64 172799000000000, i64* %dt2, align 8 - store i64 172799123000000, i64* %ldt1, align 8 - store i64 172799123000000, i64* %ldt2, align 8 + %t1 = alloca i64, align [filtered] + %t2 = alloca i64, align [filtered] + %lt1 = alloca i64, align [filtered] + %lt2 = alloca i64, align [filtered] + %d1 = alloca i64, align [filtered] + %d2 = alloca i64, align [filtered] + %ld1 = alloca i64, align [filtered] + %ld2 = alloca i64, align [filtered] + %tod1 = alloca i64, align [filtered] + %tod2 = alloca i64, align [filtered] + %ltod1 = alloca i64, align [filtered] + %ltod2 = alloca i64, align [filtered] + %dt1 = alloca i64, align [filtered] + %dt2 = alloca i64, align [filtered] + %ldt1 = alloca i64, align [filtered] + %ldt2 = alloca i64, align [filtered] + store i64 0, i64* %t1, align [filtered] + store i64 0, i64* %t2, align [filtered] + store i64 0, i64* %lt1, align [filtered] + store i64 0, i64* %lt2, align [filtered] + store i64 0, i64* %d1, align [filtered] + store i64 0, i64* %d2, align [filtered] + store i64 0, i64* %ld1, align [filtered] + store i64 0, i64* %ld2, align [filtered] + store i64 0, i64* %tod1, align [filtered] + store i64 0, i64* %tod2, align [filtered] + store i64 0, i64* %ltod1, align [filtered] + store i64 0, i64* %ltod2, align [filtered] + store i64 0, i64* %dt1, align [filtered] + store i64 0, i64* %dt2, align [filtered] + store i64 0, i64* %ldt1, align [filtered] + store i64 0, i64* %ldt2, align [filtered] + store i64 1000000000, i64* %t1, align [filtered] + store i64 1000000000, i64* %t2, align [filtered] + store i64 1000000000000, i64* %lt1, align [filtered] + store i64 1000000000000, i64* %lt2, align [filtered] + store i64 0, i64* %d1, align [filtered] + store i64 161308800000000000, i64* %d2, align [filtered] + store i64 161308800000000000, i64* %ld1, align [filtered] + store i64 161308800000000000, i64* %ld2, align [filtered] + store i64 0, i64* %tod1, align [filtered] + store i64 0, i64* %tod2, align [filtered] + store i64 86399999999999, i64* %ltod1, align [filtered] + store i64 86399999999999, i64* %ltod2, align [filtered] + store i64 172799000000000, i64* %dt1, align [filtered] + store i64 172799000000000, i64* %dt2, align [filtered] + store i64 172799123000000, i64* %ldt1, align [filtered] + store i64 172799123000000, i64* %ldt2, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_comparisons.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_comparisons.snap index c6eae872411..24513c6ca7f 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_comparisons.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__date_comparisons.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,13 +17,13 @@ entry: %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %c = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %d = getelementptr inbounds %prg, %prg* %0, i32 0, i32 3 - %load_a = load i64, i64* %a, align 8 + %load_a = load i64, i64* %a, align [filtered] %tmpVar = icmp sgt i64 %load_a, 1619827200000000000 - %load_b = load i64, i64* %b, align 8 + %load_b = load i64, i64* %b, align [filtered] %tmpVar1 = icmp sgt i64 %load_b, 1619897357000000000 - %load_c = load i64, i64* %c, align 8 + %load_c = load i64, i64* %c, align [filtered] %tmpVar2 = icmp sgt i64 %load_c, 156557000000000 - %load_d = load i64, i64* %d, align 8 + %load_d = load i64, i64* %d, align [filtered] %tmpVar3 = icmp sgt i64 %load_d, 70157000000000 ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__default_values_for_not_initialized_function_vars.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__default_values_for_not_initialized_function_vars.snap index 664deeea1c7..8555e3029d1 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__default_values_for_not_initialized_function_vars.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__default_values_for_not_initialized_function_vars.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,18 +9,18 @@ target triple = "[filtered]" define i16 @func() { entry: - %func = alloca i16, align 2 - %int_var = alloca i16, align 2 - %arr_var = alloca [3 x i32], align 4 - %ptr_var = alloca i32*, align 8 - %float_var = alloca float, align 4 - store i16 0, i16* %int_var, align 2 + %func = alloca i16, align [filtered] + %int_var = alloca i16, align [filtered] + %arr_var = alloca [3 x i32], align [filtered] + %ptr_var = alloca i32*, align [filtered] + %float_var = alloca float, align [filtered] + store i16 0, i16* %int_var, align [filtered] %0 = bitcast [3 x i32]* %arr_var to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([3 x i32]* getelementptr ([3 x i32], [3 x i32]* null, i32 1) to i64), i1 false) - store i32* null, i32** %ptr_var, align 8 - store float 0.000000e+00, float* %float_var, align 4 - store i16 0, i16* %func, align 2 - %func_ret = load i16, i16* %func, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([3 x i32]* getelementptr ([3 x i32], [3 x i32]* null, i32 1) to i64), i1 false) + store i32* null, i32** %ptr_var, align [filtered] + store float 0.000000e+00, float* %float_var, align [filtered] + store i16 0, i16* %func, align [filtered] + %func_ret = load i16, i16* %func, align [filtered] ret i16 %func_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__empty_function_with_name_generates_int_function.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__empty_function_with_name_generates_int_function.snap index 80b8915ddcb..11f0ca0c97e 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__empty_function_with_name_generates_int_function.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__empty_function_with_name_generates_int_function.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,8 +9,8 @@ target triple = "[filtered]" define i16 @foo() { entry: - %foo = alloca i16, align 2 - store i16 0, i16* %foo, align 2 - %foo_ret = load i16, i16* %foo, align 2 + %foo = alloca i16, align [filtered] + store i16 0, i16* %foo, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__empty_statements_dont_generate_anything.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__empty_statements_dont_generate_anything.snap index c581c13ce15..f12ef811484 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__empty_statements_dont_generate_anything.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__empty_statements_dont_generate_anything.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,7 +15,7 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i32, i32* %x, align 4 - %load_y = load i32, i32* %y, align 4 + %load_x = load i32, i32* %x, align [filtered] + %load_y = load i32, i32* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__enum_members_can_be_used_in_asignments.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__enum_members_can_be_used_in_asignments.snap index c1b5088c34e..cd1901cbbff 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__enum_members_can_be_used_in_asignments.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__enum_members_can_be_used_in_asignments.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,8 +17,8 @@ target triple = "[filtered]" define void @main(%main* %0) { entry: %color = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - store i32 0, i32* %color, align 4 - store i32 1, i32* %color, align 4 - store i32 2, i32* %color, align 4 + store i32 0, i32* %color, align [filtered] + store i32 1, i32* %color, align [filtered] + store i32 2, i32* %color, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_called_as_function.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_called_as_function.snap index bf0cfafb7ec..a2f47123520 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_called_as_function.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_called_as_function.snap @@ -13,8 +13,8 @@ target triple = "[filtered]" define void @MyClass(%MyClass* %0) { entry: - %this = alloca %MyClass*, align 8 - store %MyClass* %0, %MyClass** %this, align 8 + %this = alloca %MyClass*, align [filtered] + store %MyClass* %0, %MyClass** %this, align [filtered] %x = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 0 %y = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 1 %call = call i16 @MyClass__testMethod(%MyClass* %0, i16 1) @@ -24,33 +24,33 @@ entry: define i16 @MyClass__testMethod(%MyClass* %0, i16 %1) { entry: - %this = alloca %MyClass*, align 8 - store %MyClass* %0, %MyClass** %this, align 8 + %this = alloca %MyClass*, align [filtered] + store %MyClass* %0, %MyClass** %this, align [filtered] %x = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 0 %y = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 1 - %MyClass.testMethod = alloca i16, align 2 - %myMethodArg = alloca i16, align 2 - store i16 %1, i16* %myMethodArg, align 2 - %myMethodLocalVar = alloca i16, align 2 - store i16 0, i16* %myMethodLocalVar, align 2 - store i16 0, i16* %MyClass.testMethod, align 2 - %load_myMethodArg = load i16, i16* %myMethodArg, align 2 - store i16 %load_myMethodArg, i16* %x, align 2 - %load_x = load i16, i16* %x, align 2 + %MyClass.testMethod = alloca i16, align [filtered] + %myMethodArg = alloca i16, align [filtered] + store i16 %1, i16* %myMethodArg, align [filtered] + %myMethodLocalVar = alloca i16, align [filtered] + store i16 0, i16* %myMethodLocalVar, align [filtered] + store i16 0, i16* %MyClass.testMethod, align [filtered] + %load_myMethodArg = load i16, i16* %myMethodArg, align [filtered] + store i16 %load_myMethodArg, i16* %x, align [filtered] + %load_x = load i16, i16* %x, align [filtered] %2 = sext i16 %load_x to i32 %tmpVar = add i32 %2, 1 %3 = trunc i32 %tmpVar to i16 - store i16 %3, i16* %y, align 2 - %load_y = load i16, i16* %y, align 2 + store i16 %3, i16* %y, align [filtered] + %load_y = load i16, i16* %y, align [filtered] %4 = sext i16 %load_y to i32 %tmpVar1 = add i32 %4, 1 %5 = trunc i32 %tmpVar1 to i16 - store i16 %5, i16* %myMethodLocalVar, align 2 - %load_myMethodLocalVar = load i16, i16* %myMethodLocalVar, align 2 + store i16 %5, i16* %myMethodLocalVar, align [filtered] + %load_myMethodLocalVar = load i16, i16* %myMethodLocalVar, align [filtered] %6 = sext i16 %load_myMethodLocalVar to i32 %tmpVar2 = add i32 %6, 1 %7 = trunc i32 %tmpVar2 to i16 - store i16 %7, i16* %MyClass.testMethod, align 2 - %MyClass__testMethod_ret = load i16, i16* %MyClass.testMethod, align 2 + store i16 %7, i16* %MyClass.testMethod, align [filtered] + %MyClass__testMethod_ret = load i16, i16* %MyClass.testMethod, align [filtered] ret i16 %MyClass__testMethod_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_in_pou.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_in_pou.snap index b70e98ff1e0..0d0ee66afb1 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_in_pou.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_in_pou.snap @@ -15,8 +15,8 @@ target triple = "[filtered]" define void @MyClass(%MyClass* %0) { entry: - %this = alloca %MyClass*, align 8 - store %MyClass* %0, %MyClass** %this, align 8 + %this = alloca %MyClass*, align [filtered] + store %MyClass* %0, %MyClass** %this, align [filtered] %x = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 0 %y = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 1 ret void @@ -24,21 +24,21 @@ entry: define void @MyClass__testMethod(%MyClass* %0, i16 %1) { entry: - %this = alloca %MyClass*, align 8 - store %MyClass* %0, %MyClass** %this, align 8 + %this = alloca %MyClass*, align [filtered] + store %MyClass* %0, %MyClass** %this, align [filtered] %x = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 0 %y = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 1 - %myMethodArg = alloca i16, align 2 - store i16 %1, i16* %myMethodArg, align 2 - %myMethodLocalVar = alloca i16, align 2 - store i16 0, i16* %myMethodLocalVar, align 2 - %load_myMethodArg = load i16, i16* %myMethodArg, align 2 - store i16 %load_myMethodArg, i16* %x, align 2 - %load_x = load i16, i16* %x, align 2 - store i16 %load_x, i16* %y, align 2 - %load_myMethodLocalVar = load i16, i16* %myMethodLocalVar, align 2 + %myMethodArg = alloca i16, align [filtered] + store i16 %1, i16* %myMethodArg, align [filtered] + %myMethodLocalVar = alloca i16, align [filtered] + store i16 0, i16* %myMethodLocalVar, align [filtered] + %load_myMethodArg = load i16, i16* %myMethodArg, align [filtered] + store i16 %load_myMethodArg, i16* %x, align [filtered] + %load_x = load i16, i16* %x, align [filtered] + store i16 %load_x, i16* %y, align [filtered] + %load_myMethodLocalVar = load i16, i16* %myMethodLocalVar, align [filtered] %2 = sext i16 %load_myMethodLocalVar to i32 - %load_y = load i16, i16* %y, align 2 + %load_y = load i16, i16* %y, align [filtered] %3 = sext i16 %load_y to i32 %tmpVar = icmp eq i32 %2, %3 ret void @@ -49,11 +49,11 @@ entry: %cl = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %x1 = getelementptr inbounds %MyClass, %MyClass* %cl, i32 0, i32 0 - %load_x = load i16, i16* %x1, align 2 - store i16 %load_x, i16* %x, align 2 - %load_x2 = load i16, i16* %x, align 2 + %load_x = load i16, i16* %x1, align [filtered] + store i16 %load_x, i16* %x, align [filtered] + %load_x2 = load i16, i16* %x, align [filtered] call void @MyClass__testMethod(%MyClass* %cl, i16 %load_x2) - %load_x3 = load i16, i16* %x, align 2 + %load_x3 = load i16, i16* %x, align [filtered] call void @MyClass__testMethod(%MyClass* %cl, i16 %load_x3) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_with_var_in_out.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_with_var_in_out.snap index fd8a47323ce..f9d288982d0 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_with_var_in_out.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_with_var_in_out.snap @@ -15,8 +15,8 @@ target triple = "[filtered]" define void @MyClass(%MyClass* %0) { entry: - %this = alloca %MyClass*, align 8 - store %MyClass* %0, %MyClass** %this, align 8 + %this = alloca %MyClass*, align [filtered] + store %MyClass* %0, %MyClass** %this, align [filtered] %x = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 0 %y = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 1 ret void @@ -24,15 +24,15 @@ entry: define void @MyClass__testMethod(%MyClass* %0, i16* %1) { entry: - %this = alloca %MyClass*, align 8 - store %MyClass* %0, %MyClass** %this, align 8 + %this = alloca %MyClass*, align [filtered] + store %MyClass* %0, %MyClass** %this, align [filtered] %x = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 0 %y = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 1 - %myMethodArg = alloca i16*, align 8 - store i16* %1, i16** %myMethodArg, align 8 - %deref = load i16*, i16** %myMethodArg, align 8 - %load_x = load i16, i16* %x, align 2 - store i16 %load_x, i16* %deref, align 2 + %myMethodArg = alloca i16*, align [filtered] + store i16* %1, i16** %myMethodArg, align [filtered] + %deref = load i16*, i16** %myMethodArg, align [filtered] + %load_x = load i16, i16* %x, align [filtered] + store i16 %load_x, i16* %deref, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_with_var_input_defaults.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_with_var_input_defaults.snap index 311ec5917e8..1379118a692 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_with_var_input_defaults.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__fb_method_with_var_input_defaults.snap @@ -15,8 +15,8 @@ target triple = "[filtered]" define void @MyClass(%MyClass* %0) { entry: - %this = alloca %MyClass*, align 8 - store %MyClass* %0, %MyClass** %this, align 8 + %this = alloca %MyClass*, align [filtered] + store %MyClass* %0, %MyClass** %this, align [filtered] %x = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 0 %y = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 1 ret void @@ -24,14 +24,14 @@ entry: define void @MyClass__testMethod(%MyClass* %0, i16 %1) { entry: - %this = alloca %MyClass*, align 8 - store %MyClass* %0, %MyClass** %this, align 8 + %this = alloca %MyClass*, align [filtered] + store %MyClass* %0, %MyClass** %this, align [filtered] %x = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 0 %y = getelementptr inbounds %MyClass, %MyClass* %0, i32 0, i32 1 - %myMethodArg = alloca i16, align 2 - store i16 %1, i16* %myMethodArg, align 2 - %load_myMethodArg = load i16, i16* %myMethodArg, align 2 - store i16 %load_myMethodArg, i16* %x, align 2 + %myMethodArg = alloca i16, align [filtered] + store i16 %1, i16* %myMethodArg, align [filtered] + %load_myMethodArg = load i16, i16* %myMethodArg, align [filtered] + store i16 %load_myMethodArg, i16* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_continue.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_continue.snap index 02d4fca4109..261c67e6d25 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_continue.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_continue.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,16 +14,16 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 3, i32* %x, align 4 + store i32 3, i32* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %1 = load i32, i32* %x, align 4 + %1 = load i32, i32* %x, align [filtered] %condition = icmp sle i32 %1, 10 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %2 = load i32, i32* %x, align 4 + %2 = load i32, i32* %x, align [filtered] %condition1 = icmp sge i32 %2, 10 br i1 %condition1, label %loop, label %continue @@ -32,12 +31,12 @@ loop: ; preds = %predicate_sge, %pre br label %increment increment: ; preds = %loop - %3 = load i32, i32* %x, align 4 + %3 = load i32, i32* %x, align [filtered] %next = add i32 1, %3 - store i32 %next, i32* %x, align 4 + store i32 %next, i32* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge continue: ; preds = %predicate_sge, %predicate_sle - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_int.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_int.snap index ca6110a60bb..31fba37981f 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_int.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_int.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,31 +14,31 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i16 3, i16* %x, align 2 + store i16 3, i16* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %1 = load i16, i16* %x, align 2 + %1 = load i16, i16* %x, align [filtered] %2 = sext i16 %1 to i32 %condition = icmp sle i32 %2, 10 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %3 = load i16, i16* %x, align 2 + %3 = load i16, i16* %x, align [filtered] %4 = sext i16 %3 to i32 %condition1 = icmp sge i32 %4, 10 br i1 %condition1, label %loop, label %continue loop: ; preds = %predicate_sge, %predicate_sle - %load_x = load i16, i16* %x, align 2 + %load_x = load i16, i16* %x, align [filtered] br label %increment increment: ; preds = %loop - %5 = load i16, i16* %x, align 2 + %5 = load i16, i16* %x, align [filtered] %6 = sext i16 %5 to i32 %next = add i32 1, %6 %7 = trunc i32 %next to i16 - store i16 %7, i16* %x, align 2 + store i16 %7, i16* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge continue: ; preds = %predicate_sge, %predicate_sle diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_lint.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_lint.snap index de600044ea3..3f49b453b42 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_lint.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_lint.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,27 +14,27 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i64 3, i64* %x, align 8 + store i64 3, i64* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %1 = load i64, i64* %x, align 8 + %1 = load i64, i64* %x, align [filtered] %condition = icmp sle i64 %1, 10 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %2 = load i64, i64* %x, align 8 + %2 = load i64, i64* %x, align [filtered] %condition1 = icmp sge i64 %2, 10 br i1 %condition1, label %loop, label %continue loop: ; preds = %predicate_sge, %predicate_sle - %load_x = load i64, i64* %x, align 8 + %load_x = load i64, i64* %x, align [filtered] br label %increment increment: ; preds = %loop - %3 = load i64, i64* %x, align 8 + %3 = load i64, i64* %x, align [filtered] %next = add i64 1, %3 - store i64 %next, i64* %x, align 8 + store i64 %next, i64* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge continue: ; preds = %predicate_sge, %predicate_sle diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_sint.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_sint.snap index e8486f762be..d2ce92d5012 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_sint.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_sint.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,31 +14,31 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i8 3, i8* %x, align 1 + store i8 3, i8* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %1 = load i8, i8* %x, align 1 + %1 = load i8, i8* %x, align [filtered] %2 = sext i8 %1 to i32 %condition = icmp sle i32 %2, 10 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %3 = load i8, i8* %x, align 1 + %3 = load i8, i8* %x, align [filtered] %4 = sext i8 %3 to i32 %condition1 = icmp sge i32 %4, 10 br i1 %condition1, label %loop, label %continue loop: ; preds = %predicate_sge, %predicate_sle - %load_x = load i8, i8* %x, align 1 + %load_x = load i8, i8* %x, align [filtered] br label %increment increment: ; preds = %loop - %5 = load i8, i8* %x, align 1 + %5 = load i8, i8* %x, align [filtered] %6 = sext i8 %5 to i32 %next = add i32 1, %6 %7 = trunc i32 %next to i8 - store i8 %7, i8* %x, align 1 + store i8 %7, i8* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge continue: ; preds = %predicate_sge, %predicate_sle diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_continue.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_continue.snap index b3e93af44d0..7e11e283e1e 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_continue.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_continue.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,35 +14,35 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 3, i32* %x, align 4 + store i32 3, i32* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %1 = load i32, i32* %x, align 4 + %1 = load i32, i32* %x, align [filtered] %condition = icmp sle i32 %1, 10 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %2 = load i32, i32* %x, align 4 + %2 = load i32, i32* %x, align [filtered] %condition1 = icmp sge i32 %2, 10 br i1 %condition1, label %loop, label %continue loop: ; preds = %predicate_sge, %predicate_sle - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %tmpVar = add i32 %load_x, 1 - store i32 %tmpVar, i32* %x, align 4 + store i32 %tmpVar, i32* %x, align [filtered] br label %increment buffer_block: ; No predecessors! - %load_x2 = load i32, i32* %x, align 4 + %load_x2 = load i32, i32* %x, align [filtered] %tmpVar3 = sub i32 %load_x2, 1 - store i32 %tmpVar3, i32* %x, align 4 + store i32 %tmpVar3, i32* %x, align [filtered] br label %increment increment: ; preds = %buffer_block, %loop - %3 = load i32, i32* %x, align 4 + %3 = load i32, i32* %x, align [filtered] %next = add i32 7, %3 - store i32 %next, i32* %x, align 4 + store i32 %next, i32* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge continue: ; preds = %predicate_sge, %predicate_sle diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_exit.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_exit.snap index f5006ef21d5..2ab73e703dc 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_exit.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_exit.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,35 +14,35 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 3, i32* %x, align 4 + store i32 3, i32* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %1 = load i32, i32* %x, align 4 + %1 = load i32, i32* %x, align [filtered] %condition = icmp sle i32 %1, 10 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %2 = load i32, i32* %x, align 4 + %2 = load i32, i32* %x, align [filtered] %condition1 = icmp sge i32 %2, 10 br i1 %condition1, label %loop, label %continue loop: ; preds = %predicate_sge, %predicate_sle - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %tmpVar = add i32 %load_x, 2 - store i32 %tmpVar, i32* %x, align 4 + store i32 %tmpVar, i32* %x, align [filtered] br label %continue buffer_block: ; No predecessors! - %load_x2 = load i32, i32* %x, align 4 + %load_x2 = load i32, i32* %x, align [filtered] %tmpVar3 = add i32 %load_x2, 5 - store i32 %tmpVar3, i32* %x, align 4 + store i32 %tmpVar3, i32* %x, align [filtered] br label %increment increment: ; preds = %buffer_block - %3 = load i32, i32* %x, align 4 + %3 = load i32, i32* %x, align [filtered] %next = add i32 7, %3 - store i32 %next, i32* %x, align 4 + store i32 %next, i32* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge continue: ; preds = %loop, %predicate_sge, %predicate_sle diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_references_steps_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_references_steps_test.snap index e06586770b6..16f53e49210 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_references_steps_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_references_steps_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,33 +17,33 @@ entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 3 - %load_y = load i32, i32* %y, align 4 - store i32 %load_y, i32* %x, align 4 - %load_step = load i32, i32* %step, align 4 + %load_y = load i32, i32* %y, align [filtered] + store i32 %load_y, i32* %x, align [filtered] + %load_step = load i32, i32* %step, align [filtered] %is_incrementing = icmp sgt i32 %load_step, 0 br i1 %is_incrementing, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %1 = load i32, i32* %z, align 4 - %2 = load i32, i32* %x, align 4 + %1 = load i32, i32* %z, align [filtered] + %2 = load i32, i32* %x, align [filtered] %condition = icmp sle i32 %2, %1 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %3 = load i32, i32* %z, align 4 - %4 = load i32, i32* %x, align 4 + %3 = load i32, i32* %z, align [filtered] + %4 = load i32, i32* %x, align [filtered] %condition1 = icmp sge i32 %4, %3 br i1 %condition1, label %loop, label %continue loop: ; preds = %predicate_sge, %predicate_sle - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] br label %increment increment: ; preds = %loop - %5 = load i32, i32* %x, align 4 - %load_step2 = load i32, i32* %step, align 4 + %5 = load i32, i32* %x, align [filtered] + %load_step2 = load i32, i32* %step, align [filtered] %next = add i32 %load_step2, %5 - store i32 %next, i32* %x, align 4 + store i32 %next, i32* %x, align [filtered] br i1 %is_incrementing, label %predicate_sle, label %predicate_sge continue: ; preds = %predicate_sge, %predicate_sle diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_steps_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_steps_test.snap index 9e0bbb8727d..84f2061a425 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_steps_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_with_steps_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,27 +14,27 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 3, i32* %x, align 4 + store i32 3, i32* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %1 = load i32, i32* %x, align 4 + %1 = load i32, i32* %x, align [filtered] %condition = icmp sle i32 %1, 10 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %2 = load i32, i32* %x, align 4 + %2 = load i32, i32* %x, align [filtered] %condition1 = icmp sge i32 %2, 10 br i1 %condition1, label %loop, label %continue loop: ; preds = %predicate_sge, %predicate_sle - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] br label %increment increment: ; preds = %loop - %3 = load i32, i32* %x, align 4 + %3 = load i32, i32* %x, align [filtered] %next = add i32 7, %3 - store i32 %next, i32* %x, align 4 + store i32 %next, i32* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge continue: ; preds = %predicate_sge, %predicate_sle diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_without_steps_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_without_steps_test.snap index 24453db05ed..db5d46da058 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_without_steps_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__for_statement_without_steps_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,27 +14,27 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 3, i32* %x, align 4 + store i32 3, i32* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge predicate_sle: ; preds = %increment, %entry - %1 = load i32, i32* %x, align 4 + %1 = load i32, i32* %x, align [filtered] %condition = icmp sle i32 %1, 10 br i1 %condition, label %loop, label %continue predicate_sge: ; preds = %increment, %entry - %2 = load i32, i32* %x, align 4 + %2 = load i32, i32* %x, align [filtered] %condition1 = icmp sge i32 %2, 10 br i1 %condition1, label %loop, label %continue loop: ; preds = %predicate_sge, %predicate_sle - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] br label %increment increment: ; preds = %loop - %3 = load i32, i32* %x, align 4 + %3 = load i32, i32* %x, align [filtered] %next = add i32 1, %3 - store i32 %next, i32* %x, align 4 + store i32 %next, i32* %x, align [filtered] br i1 true, label %predicate_sle, label %predicate_sge continue: ; preds = %predicate_sge, %predicate_sle diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_block_instance_call.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_block_instance_call.snap index a3135862470..ac6944347ec 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_block_instance_call.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_block_instance_call.snap @@ -15,8 +15,8 @@ target triple = "[filtered]" define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %y = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 ret void diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_block_qualified_instance_call.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_block_qualified_instance_call.snap index 711bb6736cb..88377f4a53b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_block_qualified_instance_call.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_block_qualified_instance_call.snap @@ -17,16 +17,16 @@ target triple = "[filtered]" define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %bar_inst = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } define void @bar(%bar* %0) { entry: - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_call_with_same_name_as_return_type.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_call_with_same_name_as_return_type.snap index ab98c69be38..d36656446ee 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_call_with_same_name_as_return_type.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_call_with_same_name_as_return_type.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,9 +13,9 @@ target triple = "[filtered]" define i64 @TIME() { entry: - %TIME = alloca i64, align 8 - store i64 0, i64* %TIME, align 8 - %TIME_ret = load i64, i64* %TIME, align 8 + %TIME = alloca i64, align [filtered] + store i64 0, i64* %TIME, align [filtered] + %TIME_ret = load i64, i64* %TIME, align [filtered] ret i64 %TIME_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_called_in_program.snap index c6ace5627b6..d85dd8ecc2b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,10 +13,10 @@ target triple = "[filtered]" define i32 @foo() { entry: - %foo = alloca i32, align 4 - store i32 0, i32* %foo, align 4 - store i32 1, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + store i32 0, i32* %foo, align [filtered] + store i32 1, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -25,6 +24,6 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %call = call i32 @foo() - store i32 %call, i32* %x, align 4 + store i32 %call, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_called_when_shadowed.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_called_when_shadowed.snap index 0c879f6608c..77891738404 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_called_when_shadowed.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_called_when_shadowed.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,10 +13,10 @@ target triple = "[filtered]" define i32 @foo() { entry: - %foo = alloca i32, align 4 - store i32 0, i32* %foo, align 4 - store i32 1, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + store i32 0, i32* %foo, align [filtered] + store i32 1, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -25,6 +24,6 @@ define void @prg(%prg* %0) { entry: %froo = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %call = call i32 @foo() - store i32 %call, i32* %froo, align 4 + store i32 %call, i32* %froo, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_local_temp_var_initialization.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_local_temp_var_initialization.snap index 1fe2820215b..bb45138eeda 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_local_temp_var_initialization.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_local_temp_var_initialization.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,22 +13,22 @@ target triple = "[filtered]" define i32 @foo(i32 %0) { entry: - %foo = alloca i32, align 4 - %in1 = alloca i32, align 4 - store i32 %0, i32* %in1, align 4 - %x = alloca i16, align 2 - %y = alloca i16, align 2 - %z = alloca i16, align 2 - store i16 7, i16* %x, align 2 - store i16 0, i16* %y, align 2 - store i16 9, i16* %z, align 2 - store i32 0, i32* %foo, align 4 - %load_z = load i16, i16* %z, align 2 + %foo = alloca i32, align [filtered] + %in1 = alloca i32, align [filtered] + store i32 %0, i32* %in1, align [filtered] + %x = alloca i16, align [filtered] + %y = alloca i16, align [filtered] + %z = alloca i16, align [filtered] + store i16 7, i16* %x, align [filtered] + store i16 0, i16* %y, align [filtered] + store i16 9, i16* %z, align [filtered] + store i32 0, i32* %foo, align [filtered] + %load_z = load i16, i16* %z, align [filtered] %1 = sext i16 %load_z to i32 %tmpVar = add i32 %1, 1 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %y, align 2 - %foo_ret = load i32, i32* %foo, align 4 + store i16 %2, i16* %y, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_local_var_initialization_and_call.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_local_var_initialization_and_call.snap index 1ebb89bcb30..20d6adb0b0e 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_local_var_initialization_and_call.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_local_var_initialization_and_call.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,18 +13,18 @@ target triple = "[filtered]" define i32 @foo(i32 %0) { entry: - %foo = alloca i32, align 4 - %in1 = alloca i32, align 4 - store i32 %0, i32* %in1, align 4 - %x = alloca i16, align 2 - %y = alloca i16, align 2 - %z = alloca i16, align 2 - store i16 7, i16* %x, align 2 - store i16 0, i16* %y, align 2 - store i16 9, i16* %z, align 2 - store i32 0, i32* %foo, align 4 - store i32 1, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %in1 = alloca i32, align [filtered] + store i32 %0, i32* %in1, align [filtered] + %x = alloca i16, align [filtered] + %y = alloca i16, align [filtered] + %z = alloca i16, align [filtered] + store i16 7, i16* %x, align [filtered] + store i16 0, i16* %y, align [filtered] + store i16 9, i16* %z, align [filtered] + store i32 0, i32* %foo, align [filtered] + store i32 1, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_parameters_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_parameters_called_in_program.snap index d007ed4a0c6..a06172fc57f 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_parameters_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_parameters_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,12 +13,12 @@ target triple = "[filtered]" define i32 @foo(i32 %0) { entry: - %foo = alloca i32, align 4 - %bar = alloca i32, align 4 - store i32 %0, i32* %bar, align 4 - store i32 0, i32* %foo, align 4 - store i32 1, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %bar = alloca i32, align [filtered] + store i32 %0, i32* %bar, align [filtered] + store i32 0, i32* %foo, align [filtered] + store i32 1, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -27,6 +26,6 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %call = call i32 @foo(i32 2) - store i32 %call, i32* %x, align 4 + store i32 %call, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_two_parameters_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_two_parameters_called_in_program.snap index 74bf8ecf889..1acc117fa93 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_two_parameters_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__function_with_two_parameters_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,14 +13,14 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i8 %1) { entry: - %foo = alloca i32, align 4 - %bar = alloca i32, align 4 - store i32 %0, i32* %bar, align 4 - %buz = alloca i8, align 1 - store i8 %1, i8* %buz, align 1 - store i32 0, i32* %foo, align 4 - store i32 1, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %bar = alloca i32, align [filtered] + store i32 %0, i32* %bar, align [filtered] + %buz = alloca i8, align [filtered] + store i8 %1, i8* %buz, align [filtered] + store i32 0, i32* %foo, align [filtered] + store i32 1, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -29,6 +28,6 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %call = call i32 @foo(i32 2, i8 1) - store i32 %call, i32* %x, align 4 + store i32 %call, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__global_variable_reference_is_generated.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__global_variable_reference_is_generated.snap index b7547e46e38..113cc149d73 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__global_variable_reference_is_generated.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__global_variable_reference_is_generated.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: function -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,8 +15,8 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i16 20, i16* @gX, align 2 - %load_gX = load i16, i16* @gX, align 2 - store i16 %load_gX, i16* %x, align 2 + store i16 20, i16* @gX, align [filtered] + %load_gX = load i16, i16* @gX, align [filtered] + store i16 %load_gX, i16* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_elsif_else_generator_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_elsif_else_generator_test.snap index 2e5bf6202a3..34dfdc1693d 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_elsif_else_generator_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_elsif_else_generator_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -21,34 +20,34 @@ entry: %b1 = getelementptr inbounds %prg, %prg* %0, i32 0, i32 4 %b2 = getelementptr inbounds %prg, %prg* %0, i32 0, i32 5 %b3 = getelementptr inbounds %prg, %prg* %0, i32 0, i32 6 - %load_b1 = load i8, i8* %b1, align 1 + %load_b1 = load i8, i8* %b1, align [filtered] %1 = icmp ne i8 %load_b1, 0 br i1 %1, label %condition_body, label %branch condition_body: ; preds = %entry - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] br label %continue branch: ; preds = %entry - %load_b2 = load i8, i8* %b2, align 1 + %load_b2 = load i8, i8* %b2, align [filtered] %2 = icmp ne i8 %load_b2, 0 br i1 %2, label %condition_body2, label %branch1 condition_body2: ; preds = %branch - %load_y = load i32, i32* %y, align 4 + %load_y = load i32, i32* %y, align [filtered] br label %continue branch1: ; preds = %branch - %load_b3 = load i8, i8* %b3, align 1 + %load_b3 = load i8, i8* %b3, align [filtered] %3 = icmp ne i8 %load_b3, 0 br i1 %3, label %condition_body3, label %else condition_body3: ; preds = %branch1 - %load_z = load i32, i32* %z, align 4 + %load_z = load i32, i32* %z, align [filtered] br label %continue else: ; preds = %branch1 - %load_u = load i32, i32* %u, align 4 + %load_u = load i32, i32* %u, align [filtered] br label %continue continue: ; preds = %else, %condition_body3, %condition_body2, %condition_body diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_generator_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_generator_test.snap index 86eab054f2c..127f6956bff 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_generator_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_generator_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,12 +15,12 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b1 = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_b1 = load i8, i8* %b1, align 1 + %load_b1 = load i8, i8* %b1, align [filtered] %1 = icmp ne i8 %load_b1, 0 br i1 %1, label %condition_body, label %continue condition_body: ; preds = %entry - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] br label %continue continue: ; preds = %condition_body, %entry diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_with_expression_generator_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_with_expression_generator_test.snap index 4a1e10b1df8..8a871e39c8b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_with_expression_generator_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__if_with_expression_generator_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,21 +15,21 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b1 = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %tmpVar = icmp sgt i32 %load_x, 1 %1 = zext i1 %tmpVar to i8 %2 = icmp ne i8 %1, 0 br i1 %2, label %5, label %3 condition_body: ; preds = %5 - %load_x1 = load i32, i32* %x, align 4 + %load_x1 = load i32, i32* %x, align [filtered] br label %continue continue: ; preds = %condition_body, %5 ret void 3: ; preds = %entry - %load_b1 = load i8, i8* %b1, align 1 + %load_b1 = load i8, i8* %b1, align [filtered] %4 = icmp ne i8 %load_b1, 0 br label %5 diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_return.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_return.snap index 71fa9ba941d..785360652be 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_return.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_return.snap @@ -18,11 +18,11 @@ entry: define i16 @MyClass__testMethod(%MyClass* %0, i16 %1) { entry: - %MyClass.testMethod = alloca i16, align 2 - %myMethodArg = alloca i16, align 2 - store i16 %1, i16* %myMethodArg, align 2 - store i16 0, i16* %MyClass.testMethod, align 2 - store i16 1, i16* %MyClass.testMethod, align 2 - %MyClass__testMethod_ret = load i16, i16* %MyClass.testMethod, align 2 + %MyClass.testMethod = alloca i16, align [filtered] + %myMethodArg = alloca i16, align [filtered] + store i16 %1, i16* %myMethodArg, align [filtered] + store i16 0, i16* %MyClass.testMethod, align [filtered] + store i16 1, i16* %MyClass.testMethod, align [filtered] + %MyClass__testMethod_ret = load i16, i16* %MyClass.testMethod, align [filtered] ret i16 %MyClass__testMethod_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_void.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_void.snap index ed98c5de648..10b96acdb46 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_void.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_void.snap @@ -18,10 +18,10 @@ entry: define void @MyClass__testMethod(%MyClass* %0, i16 %1) { entry: - %myMethodArg = alloca i16, align 2 - store i16 %1, i16* %myMethodArg, align 2 - %myMethodLocalVar = alloca i16, align 2 - store i16 0, i16* %myMethodLocalVar, align 2 - store i16 1, i16* %myMethodLocalVar, align 2 + %myMethodArg = alloca i16, align [filtered] + store i16 %1, i16* %myMethodArg, align [filtered] + %myMethodLocalVar = alloca i16, align [filtered] + store i16 0, i16* %myMethodLocalVar, align [filtered] + store i16 1, i16* %myMethodLocalVar, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_with_initialized_input.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_with_initialized_input.snap index cbc686079cf..a6ccc201044 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_with_initialized_input.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_with_initialized_input.snap @@ -13,8 +13,8 @@ target triple = "[filtered]" define void @fb(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %call = call i32 @fb__meth(%fb* %0, i32 5) %call1 = call i32 @fb__meth(%fb* %0, i32 4) ret void @@ -22,20 +22,20 @@ entry: define i32 @fb__meth(%fb* %0, i32 %1) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 - %fb.meth = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 %1, i32* %a, align 4 - store i32 0, i32* %fb.meth, align 4 - %fb__meth_ret = load i32, i32* %fb.meth, align 4 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] + %fb.meth = alloca i32, align [filtered] + %a = alloca i32, align [filtered] + store i32 %1, i32* %a, align [filtered] + store i32 0, i32* %fb.meth, align [filtered] + %fb__meth_ret = load i32, i32* %fb.meth, align [filtered] ret i32 %fb__meth_ret } define i32 @foo() { entry: - %foo = alloca i32, align 4 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_with_multiple_input.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_with_multiple_input.snap index 692f2745485..2737d71af2f 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_with_multiple_input.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_codegen_with_multiple_input.snap @@ -13,8 +13,8 @@ target triple = "[filtered]" define void @fb(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %call = call i32 @fb__meth(%fb* %0, i32 1, i32 2, i32 3) %call1 = call i32 @fb__meth(%fb* %0, i32 5, i32 7, i32 10) %call2 = call i32 @fb__meth(%fb* %0, i32 3, i32 4, i32 10) @@ -24,16 +24,16 @@ entry: define i32 @fb__meth(%fb* %0, i32 %1, i32 %2, i32 %3) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 - %fb.meth = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 %1, i32* %a, align 4 - %b = alloca i32, align 4 - store i32 %2, i32* %b, align 4 - %c = alloca i32, align 4 - store i32 %3, i32* %c, align 4 - store i32 0, i32* %fb.meth, align 4 - %fb__meth_ret = load i32, i32* %fb.meth, align 4 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] + %fb.meth = alloca i32, align [filtered] + %a = alloca i32, align [filtered] + store i32 %1, i32* %a, align [filtered] + %b = alloca i32, align [filtered] + store i32 %2, i32* %b, align [filtered] + %c = alloca i32, align [filtered] + store i32 %3, i32* %c, align [filtered] + store i32 0, i32* %fb.meth, align [filtered] + %fb__meth_ret = load i32, i32* %fb.meth, align [filtered] ret i32 %fb__meth_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_with_aggregate_return_type.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_with_aggregate_return_type.snap index 04caa3700ac..8efae01a701 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_with_aggregate_return_type.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__method_with_aggregate_return_type.snap @@ -14,36 +14,36 @@ target triple = "[filtered]" define void @fb_with_method(%fb_with_method* %0) { entry: - %this = alloca %fb_with_method*, align 8 - store %fb_with_method* %0, %fb_with_method** %this, align 8 - %ret = alloca [81 x i8], align 1 + %this = alloca %fb_with_method*, align [filtered] + store %fb_with_method* %0, %fb_with_method** %this, align [filtered] + %ret = alloca [81 x i8], align [filtered] %1 = bitcast [81 x i8]* %ret to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - %__method_with_aggregagte_return0 = alloca [81 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + %__method_with_aggregagte_return0 = alloca [81 x i8], align [filtered] %2 = bitcast [81 x i8]* %__method_with_aggregagte_return0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %2, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %2, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %3 = bitcast [81 x i8]* %__method_with_aggregagte_return0 to i8* call void @fb_with_method__method_with_aggregagte_return(%fb_with_method* %0, i8* %3, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0)) %4 = bitcast [81 x i8]* %ret to i8* %5 = bitcast [81 x i8]* %__method_with_aggregagte_return0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %4, i8* align 1 %5, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %4, i8* align [filtered] %5, i32 80, i1 false) ret void } define void @fb_with_method__method_with_aggregagte_return(%fb_with_method* %0, i8* %1, i8* %2) { entry: - %this = alloca %fb_with_method*, align 8 - store %fb_with_method* %0, %fb_with_method** %this, align 8 - %ret = alloca [81 x i8], align 1 - %method_with_aggregagte_return = alloca i8*, align 8 - store i8* %1, i8** %method_with_aggregagte_return, align 8 - %in = alloca [81 x i8], align 1 + %this = alloca %fb_with_method*, align [filtered] + store %fb_with_method* %0, %fb_with_method** %this, align [filtered] + %ret = alloca [81 x i8], align [filtered] + %method_with_aggregagte_return = alloca i8*, align [filtered] + store i8* %1, i8** %method_with_aggregagte_return, align [filtered] + %in = alloca [81 x i8], align [filtered] %bitcast = bitcast [81 x i8]* %in to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 81, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %2, i64 80, i1 false) - %deref = load i8*, i8** %method_with_aggregagte_return, align 8 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 81, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %2, i64 80, i1 false) + %deref = load i8*, i8** %method_with_aggregagte_return, align [filtered] %3 = bitcast [81 x i8]* %in to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %deref, i8* align 1 %3, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %deref, i8* align [filtered] %3, i32 80, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__methods_var_output.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__methods_var_output.snap index 6aec05b98db..b83bd157167 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__methods_var_output.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__methods_var_output.snap @@ -14,31 +14,31 @@ target triple = "[filtered]" define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] ret void } define void @foo__baz(%foo* %0, [81 x i8]* %1) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 - %out = alloca [81 x i8]*, align 8 - store [81 x i8]* %1, [81 x i8]** %out, align 8 - %deref = load [81 x i8]*, [81 x i8]** %out, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] + %out = alloca [81 x i8]*, align [filtered] + store [81 x i8]* %1, [81 x i8]** %out, align [filtered] + %deref = load [81 x i8]*, [81 x i8]** %out, align [filtered] %2 = bitcast [81 x i8]* %deref to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %2, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) ret void } define void @main() { entry: - %s = alloca [81 x i8], align 1 - %fb = alloca %foo, align 8 + %s = alloca [81 x i8], align [filtered] + %fb = alloca %foo, align [filtered] %0 = bitcast [81 x i8]* %s to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %1 = bitcast %foo* %fb to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) %2 = bitcast [81 x i8]* %s to i8* call void @foo__baz(%foo* %fb, i8* %2) %3 = bitcast [81 x i8]* %s to i8* diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__multidim_array_access.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__multidim_array_access.snap index 7de21f74a66..1de8b464b06 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__multidim_array_access.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__multidim_array_access.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,11 +15,11 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %tmpVar = getelementptr inbounds [8 x i32], [8 x i32]* %x, i32 0, i32 4 - store i32 3, i32* %tmpVar, align 4 + store i32 3, i32* %tmpVar, align [filtered] %tmpVar1 = getelementptr inbounds [8 x i32], [8 x i32]* %x, i32 0, i32 7 %tmpVar2 = getelementptr inbounds [8 x i32], [8 x i32]* %x, i32 0, i32 3 - %load_tmpVar = load i32, i32* %tmpVar2, align 4 + %load_tmpVar = load i32, i32* %tmpVar2, align [filtered] %tmpVar3 = add i32 %load_tmpVar, 3 - store i32 %tmpVar3, i32* %tmpVar1, align 4 + store i32 %tmpVar3, i32* %tmpVar1, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_access.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_access.snap index 5389c99652d..ef5792b8138 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_access.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_access.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,13 +16,13 @@ entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %tmpVar = getelementptr inbounds [4 x [2 x i32]], [4 x [2 x i32]]* %x, i32 0, i32 2 %tmpVar1 = getelementptr inbounds [2 x i32], [2 x i32]* %tmpVar, i32 0, i32 0 - store i32 3, i32* %tmpVar1, align 4 + store i32 3, i32* %tmpVar1, align [filtered] %tmpVar2 = getelementptr inbounds [4 x [2 x i32]], [4 x [2 x i32]]* %x, i32 0, i32 3 %tmpVar3 = getelementptr inbounds [2 x i32], [2 x i32]* %tmpVar2, i32 0, i32 1 %tmpVar4 = getelementptr inbounds [4 x [2 x i32]], [4 x [2 x i32]]* %x, i32 0, i32 1 %tmpVar5 = getelementptr inbounds [2 x i32], [2 x i32]* %tmpVar4, i32 0, i32 1 - %load_tmpVar = load i32, i32* %tmpVar5, align 4 + %load_tmpVar = load i32, i32* %tmpVar5, align [filtered] %tmpVar6 = add i32 %load_tmpVar, 3 - store i32 %tmpVar6, i32* %tmpVar3, align 4 + store i32 %tmpVar6, i32* %tmpVar3, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_cube_writes.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_cube_writes.snap index f250f19b24b..0e46728fdd6 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_cube_writes.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_cube_writes.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,27 +17,27 @@ entry: %y = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %z = getelementptr inbounds %main, %main* %0, i32 0, i32 2 %cube = getelementptr inbounds %main, %main* %0, i32 0, i32 3 - %load_x = load i16, i16* %x, align 2 + %load_x = load i16, i16* %x, align [filtered] %1 = sext i16 %load_x to i32 %tmpVar = mul i32 25, %1 %tmpVar1 = add i32 %tmpVar, 0 - %load_y = load i16, i16* %y, align 2 + %load_y = load i16, i16* %y, align [filtered] %2 = sext i16 %load_y to i32 %tmpVar2 = mul i32 5, %2 %tmpVar3 = add i32 %tmpVar2, %tmpVar1 - %load_z = load i16, i16* %z, align 2 + %load_z = load i16, i16* %z, align [filtered] %3 = sext i16 %load_z to i32 %tmpVar4 = mul i32 1, %3 %tmpVar5 = add i32 %tmpVar4, %tmpVar3 %tmpVar6 = getelementptr inbounds [125 x i32], [125 x i32]* %cube, i32 0, i32 %tmpVar5 - %load_x7 = load i16, i16* %x, align 2 + %load_x7 = load i16, i16* %x, align [filtered] %4 = sext i16 %load_x7 to i32 - %load_y8 = load i16, i16* %y, align 2 + %load_y8 = load i16, i16* %y, align [filtered] %5 = sext i16 %load_y8 to i32 %tmpVar9 = mul i32 %4, %5 - %load_z10 = load i16, i16* %z, align 2 + %load_z10 = load i16, i16* %z, align [filtered] %6 = sext i16 %load_z10 to i32 %tmpVar11 = mul i32 %tmpVar9, %6 - store i32 %tmpVar11, i32* %tmpVar6, align 4 + store i32 %tmpVar11, i32* %tmpVar6, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_cube_writes_negative_start.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_cube_writes_negative_start.snap index 63e1a12c22f..2536b2d1caf 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_cube_writes_negative_start.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_array_cube_writes_negative_start.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,30 +17,30 @@ entry: %y = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %z = getelementptr inbounds %main, %main* %0, i32 0, i32 2 %cube = getelementptr inbounds %main, %main* %0, i32 0, i32 3 - %load_x = load i16, i16* %x, align 2 + %load_x = load i16, i16* %x, align [filtered] %1 = sub i16 %load_x, -2 %2 = sext i16 %1 to i32 %tmpVar = mul i32 25, %2 %tmpVar1 = add i32 %tmpVar, 0 - %load_y = load i16, i16* %y, align 2 + %load_y = load i16, i16* %y, align [filtered] %3 = sub i16 %load_y, -2 %4 = sext i16 %3 to i32 %tmpVar2 = mul i32 5, %4 %tmpVar3 = add i32 %tmpVar2, %tmpVar1 - %load_z = load i16, i16* %z, align 2 + %load_z = load i16, i16* %z, align [filtered] %5 = sub i16 %load_z, -2 %6 = sext i16 %5 to i32 %tmpVar4 = mul i32 1, %6 %tmpVar5 = add i32 %tmpVar4, %tmpVar3 %tmpVar6 = getelementptr inbounds [125 x i32], [125 x i32]* %cube, i32 0, i32 %tmpVar5 - %load_x7 = load i16, i16* %x, align 2 + %load_x7 = load i16, i16* %x, align [filtered] %7 = sext i16 %load_x7 to i32 - %load_y8 = load i16, i16* %y, align 2 + %load_y8 = load i16, i16* %y, align [filtered] %8 = sext i16 %load_y8 to i32 %tmpVar9 = mul i32 %7, %8 - %load_z10 = load i16, i16* %z, align 2 + %load_z10 = load i16, i16* %z, align [filtered] %9 = sext i16 %load_z10 to i32 %tmpVar11 = mul i32 %tmpVar9, %9 - store i32 %tmpVar11, i32* %tmpVar6, align 4 + store i32 %tmpVar11, i32* %tmpVar6, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_function_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_function_called_in_program.snap index 35adccc8a4a..3d9db8db3d2 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_function_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__nested_function_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,21 +13,21 @@ target triple = "[filtered]" define i32 @bar() { entry: - %bar = alloca i32, align 4 - store i32 0, i32* %bar, align 4 - store i32 1, i32* %bar, align 4 - %bar_ret = load i32, i32* %bar, align 4 + %bar = alloca i32, align [filtered] + store i32 0, i32* %bar, align [filtered] + store i32 1, i32* %bar, align [filtered] + %bar_ret = load i32, i32* %bar, align [filtered] ret i32 %bar_ret } define i32 @foo(i32 %0) { entry: - %foo = alloca i32, align 4 - %in = alloca i32, align 4 - store i32 %0, i32* %in, align 4 - store i32 0, i32* %foo, align 4 - store i32 1, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %in = alloca i32, align [filtered] + store i32 %0, i32* %in, align [filtered] + store i32 0, i32* %foo, align [filtered] + store i32 1, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -37,6 +36,6 @@ entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %call = call i32 @bar() %call1 = call i32 @foo(i32 %call) - store i32 %call1, i32* %x, align 4 + store i32 %call1, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__order_var_and_var_temp_block.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__order_var_and_var_temp_block.snap index 91c2859d3bf..2ddc168623d 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__order_var_and_var_temp_block.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__order_var_and_var_temp_block.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,8 +13,8 @@ target triple = "[filtered]" define void @main(%main* %0) { entry: - %temp = alloca i16, align 2 + %temp = alloca i16, align [filtered] %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - store i16 0, i16* %temp, align 2 + store i16 0, i16* %temp, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pass_inout_to_inout.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pass_inout_to_inout.snap index 099458304ee..d8a2d1fe52d 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pass_inout_to_inout.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pass_inout_to_inout.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -26,11 +25,11 @@ entry: define void @foo(%foo* %0) { entry: %inout = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %deref = load i32*, i32** %inout, align 8 - store i32* %deref, i32** getelementptr inbounds (%foo2, %foo2* @foo2_instance, i32 0, i32 0), align 8 - %deref1 = load i32*, i32** %inout, align 8 - %load_inout = load i32, i32* %deref1, align 4 - store i32 %load_inout, i32* getelementptr inbounds (%foo2, %foo2* @foo2_instance, i32 0, i32 1), align 4 + %deref = load i32*, i32** %inout, align [filtered] + store i32* %deref, i32** getelementptr inbounds (%foo2, %foo2* @foo2_instance, i32 0, i32 0), align [filtered] + %deref1 = load i32*, i32** %inout, align [filtered] + %load_inout = load i32, i32* %deref1, align [filtered] + store i32 %load_inout, i32* getelementptr inbounds (%foo2, %foo2* @foo2_instance, i32 0, i32 1), align [filtered] call void @foo2(%foo2* @foo2_instance) ret void } @@ -38,7 +37,7 @@ entry: define void @prg(%prg* %0) { entry: %baz = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32* %baz, i32** getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align 8 + store i32* %baz, i32** getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align [filtered] call void @foo(%foo* @foo_instance) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pointer_and_array_access_to_in_out.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pointer_and_array_access_to_in_out.snap index b2cce2ddcd0..f864e76b008 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pointer_and_array_access_to_in_out.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pointer_and_array_access_to_in_out.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,22 +9,22 @@ target triple = "[filtered]" define i16 @main(i16** %0, i16* %1) { entry: - %main = alloca i16, align 2 - %a = alloca i16**, align 8 - store i16** %0, i16*** %a, align 8 - %b = alloca i16*, align 8 - store i16* %1, i16** %b, align 8 - %c = alloca i16, align 2 - store i16 0, i16* %c, align 2 - store i16 0, i16* %main, align 2 - %deref = load i16**, i16*** %a, align 8 - %deref1 = load i16*, i16** %deref, align 8 - %load_tmpVar = load i16, i16* %deref1, align 2 - store i16 %load_tmpVar, i16* %c, align 2 - %deref2 = load i16*, i16** %b, align 8 + %main = alloca i16, align [filtered] + %a = alloca i16**, align [filtered] + store i16** %0, i16*** %a, align [filtered] + %b = alloca i16*, align [filtered] + store i16* %1, i16** %b, align [filtered] + %c = alloca i16, align [filtered] + store i16 0, i16* %c, align [filtered] + store i16 0, i16* %main, align [filtered] + %deref = load i16**, i16*** %a, align [filtered] + %deref1 = load i16*, i16** %deref, align [filtered] + %load_tmpVar = load i16, i16* %deref1, align [filtered] + store i16 %load_tmpVar, i16* %c, align [filtered] + %deref2 = load i16*, i16** %b, align [filtered] %tmpVar = getelementptr inbounds i16, i16* %deref2, i32 0 - %load_tmpVar3 = load i16, i16* %tmpVar, align 2 - store i16 %load_tmpVar3, i16* %c, align 2 - %main_ret = load i16, i16* %main, align 2 + %load_tmpVar3 = load i16, i16* %tmpVar, align [filtered] + store i16 %load_tmpVar3, i16* %c, align [filtered] + %main_ret = load i16, i16* %main, align [filtered] ret i16 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pointers_generated.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pointers_generated.snap index c34eb17bb60..c04d062f588 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pointers_generated.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__pointers_generated.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,21 +16,21 @@ entry: %X = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %pX = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %rX = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - store i8* null, i8** %pX, align 8 - store i8* null, i8** %rX, align 8 - store i8* %X, i8** %pX, align 8 - store i8* %X, i8** %rX, align 8 - %deref = load i8*, i8** %pX, align 8 - %load_tmpVar = load i8, i8* %deref, align 1 - store i8 %load_tmpVar, i8* %X, align 1 - %deref1 = load i8*, i8** %rX, align 8 - %load_tmpVar2 = load i8, i8* %deref1, align 1 - store i8 %load_tmpVar2, i8* %X, align 1 - %deref3 = load i8*, i8** %pX, align 8 - %load_X = load i8, i8* %X, align 1 - store i8 %load_X, i8* %deref3, align 1 - %deref4 = load i8*, i8** %rX, align 8 - %load_X5 = load i8, i8* %X, align 1 - store i8 %load_X5, i8* %deref4, align 1 + store i8* null, i8** %pX, align [filtered] + store i8* null, i8** %rX, align [filtered] + store i8* %X, i8** %pX, align [filtered] + store i8* %X, i8** %rX, align [filtered] + %deref = load i8*, i8** %pX, align [filtered] + %load_tmpVar = load i8, i8* %deref, align [filtered] + store i8 %load_tmpVar, i8* %X, align [filtered] + %deref1 = load i8*, i8** %rX, align [filtered] + %load_tmpVar2 = load i8, i8* %deref1, align [filtered] + store i8 %load_tmpVar2, i8* %X, align [filtered] + %deref3 = load i8*, i8** %pX, align [filtered] + %load_X = load i8, i8* %X, align [filtered] + store i8 %load_X, i8* %deref3, align [filtered] + %deref4 = load i8*, i8** %rX, align [filtered] + %load_X5 = load i8, i8* %X, align [filtered] + store i8 %load_X5, i8* %deref4, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_and_statement.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_and_statement.snap index 63e46e7312f..c7aad8329eb 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_and_statement.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_and_statement.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,12 +15,12 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i8, i8* %x, align 1 + %load_x = load i8, i8* %x, align [filtered] %1 = icmp ne i8 %load_x, 0 br i1 %1, label %2, label %4 2: ; preds = %entry - %load_y = load i8, i8* %y, align 1 + %load_y = load i8, i8* %y, align [filtered] %3 = icmp ne i8 %load_y, 0 br label %4 diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_bool_variables_and_references_generates_void_function_and_struct_and_body.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_bool_variables_and_references_generates_void_function_and_struct_and_body.snap index 6ce4e9dbbcb..f83241f0a31 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_bool_variables_and_references_generates_void_function_and_struct_and_body.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_bool_variables_and_references_generates_void_function_and_struct_and_body.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,7 +15,7 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i8, i8* %x, align 1 - %load_y = load i8, i8* %y, align 1 + %load_x = load i8, i8* %x, align [filtered] + %load_y = load i8, i8* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_boolean_assignment_generates_void_function_and_struct_and_body.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_boolean_assignment_generates_void_function_and_struct_and_body.snap index 3a4df173975..cf6d2ff2b06 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_boolean_assignment_generates_void_function_and_struct_and_body.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_boolean_assignment_generates_void_function_and_struct_and_body.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,7 +14,7 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i8 1, i8* %y, align 1 - store i8 0, i8* %y, align 1 + store i8 1, i8* %y, align [filtered] + store i8 0, i8* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_casted_chars_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_casted_chars_assignment.snap index 04ab9a30cef..ff9442fb8ce 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_casted_chars_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_casted_chars_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,7 +17,7 @@ define void @mainPROG(%mainPROG* %0) { entry: %x = getelementptr inbounds %mainPROG, %mainPROG* %0, i32 0, i32 0 %y = getelementptr inbounds %mainPROG, %mainPROG* %0, i32 0, i32 1 - store i8 65, i8* %x, align 1 - store i16 66, i16* %y, align 2 + store i8 65, i8* %x, align [filtered] + store i16 66, i16* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_chars.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_chars.snap index 9f69a89967f..e34ae6024c4 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_chars.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_chars.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -22,11 +21,11 @@ define void @mainPROG(%mainPROG* %0) { entry: %x = getelementptr inbounds %mainPROG, %mainPROG* %0, i32 0, i32 0 %y = getelementptr inbounds %mainPROG, %mainPROG* %0, i32 0, i32 1 - store i8 97, i8* %x, align 1 - store i8 32, i8* %x, align 1 - store i16 65, i16* %y, align 2 - store i16 32, i16* %y, align 2 - store i16 39, i16* %y, align 2 - store i16 34, i16* %y, align 2 + store i8 97, i8* %x, align [filtered] + store i8 32, i8* %x, align [filtered] + store i16 65, i16* %y, align [filtered] + store i16 32, i16* %y, align [filtered] + store i16 39, i16* %y, align [filtered] + store i16 34, i16* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_date_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_date_assignment.snap index 4bfac75e8bb..79bbdac539e 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_date_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_date_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,17 +17,17 @@ entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 3 - store i64 56190123000000, i64* %w, align 8 - store i64 56190123000000, i64* %w, align 8 - store i64 100012000000, i64* %x, align 8 - store i64 100012000000, i64* %x, align 8 - store i64 465436800000000000, i64* %y, align 8 - store i64 0, i64* %y, align 8 - store i64 465509714000000000, i64* %z, align 8 - store i64 58804123000000, i64* %z, align 8 - store i64 58804123456789, i64* %z, align 8 - store i64 946757700000000000, i64* %z, align 8 - store i64 946757700000000000, i64* %z, align 8 - store i64 946757708123000000, i64* %z, align 8 + store i64 56190123000000, i64* %w, align [filtered] + store i64 56190123000000, i64* %w, align [filtered] + store i64 100012000000, i64* %x, align [filtered] + store i64 100012000000, i64* %x, align [filtered] + store i64 465436800000000000, i64* %y, align [filtered] + store i64 0, i64* %y, align [filtered] + store i64 465509714000000000, i64* %z, align [filtered] + store i64 58804123000000, i64* %z, align [filtered] + store i64 58804123456789, i64* %z, align [filtered] + store i64 946757700000000000, i64* %z, align [filtered] + store i64 946757700000000000, i64* %z, align [filtered] + store i64 946757708123000000, i64* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_date_assignment_whit_short_datatype_names.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_date_assignment_whit_short_datatype_names.snap index 98c6860b9e3..a7c23df18f3 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_date_assignment_whit_short_datatype_names.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_date_assignment_whit_short_datatype_names.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,14 +17,14 @@ entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 3 - store i64 56190123000000, i64* %w, align 8 - store i64 56190123000000, i64* %w, align 8 - store i64 100012000000, i64* %x, align 8 - store i64 100012000000, i64* %x, align 8 - store i64 465436800000000000, i64* %y, align 8 - store i64 0, i64* %y, align 8 - store i64 465509700000000000, i64* %z, align 8 - store i64 58808123000000, i64* %z, align 8 - store i64 58804123456789, i64* %z, align 8 + store i64 56190123000000, i64* %w, align [filtered] + store i64 56190123000000, i64* %w, align [filtered] + store i64 100012000000, i64* %x, align [filtered] + store i64 100012000000, i64* %x, align [filtered] + store i64 465436800000000000, i64* %y, align [filtered] + store i64 0, i64* %y, align [filtered] + store i64 465509700000000000, i64* %z, align [filtered] + store i64 58808123000000, i64* %z, align [filtered] + store i64 58804123456789, i64* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_floats_variable_and_comparison_assignment_generates_correctly.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_floats_variable_and_comparison_assignment_generates_correctly.snap index def45d32d06..4d2eab8fc49 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_floats_variable_and_comparison_assignment_generates_correctly.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_floats_variable_and_comparison_assignment_generates_correctly.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,29 +15,29 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load float, float* %x, align 4 + %load_x = load float, float* %x, align [filtered] %tmpVar = fcmp oeq float %load_x, 1.000000e+00 %1 = zext i1 %tmpVar to i8 - store i8 %1, i8* %y, align 1 - %load_x1 = load float, float* %x, align 4 + store i8 %1, i8* %y, align [filtered] + %load_x1 = load float, float* %x, align [filtered] %tmpVar2 = fcmp ogt float %load_x1, 2.000000e+00 %2 = zext i1 %tmpVar2 to i8 - store i8 %2, i8* %y, align 1 - %load_x3 = load float, float* %x, align 4 + store i8 %2, i8* %y, align [filtered] + %load_x3 = load float, float* %x, align [filtered] %tmpVar4 = fcmp olt float %load_x3, 3.000000e+00 %3 = zext i1 %tmpVar4 to i8 - store i8 %3, i8* %y, align 1 - %load_x5 = load float, float* %x, align 4 + store i8 %3, i8* %y, align [filtered] + %load_x5 = load float, float* %x, align [filtered] %tmpVar6 = fcmp one float %load_x5, 4.000000e+00 %4 = zext i1 %tmpVar6 to i8 - store i8 %4, i8* %y, align 1 - %load_x7 = load float, float* %x, align 4 + store i8 %4, i8* %y, align [filtered] + %load_x7 = load float, float* %x, align [filtered] %tmpVar8 = fcmp oge float %load_x7, 5.000000e+00 %5 = zext i1 %tmpVar8 to i8 - store i8 %5, i8* %y, align 1 - %load_x9 = load float, float* %x, align 4 + store i8 %5, i8* %y, align [filtered] + %load_x9 = load float, float* %x, align [filtered] %tmpVar10 = fcmp ole float %load_x9, 6.000000e+00 %6 = zext i1 %tmpVar10 to i8 - store i8 %6, i8* %y, align 1 + store i8 %6, i8* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_local_temp_var_initialization.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_local_temp_var_initialization.snap index f544c8a8882..c4ca1467d1a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_local_temp_var_initialization.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_local_temp_var_initialization.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,15 +16,15 @@ target triple = "[filtered]" define void @foo(%foo* %0) { entry: %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %y = alloca i16, align 2 - %z = alloca i16, align 2 - store i16 0, i16* %y, align 2 - store i16 9, i16* %z, align 2 - %load_z = load i16, i16* %z, align 2 + %y = alloca i16, align [filtered] + %z = alloca i16, align [filtered] + store i16 0, i16* %y, align [filtered] + store i16 9, i16* %z, align [filtered] + %load_z = load i16, i16* %z, align [filtered] %1 = sext i16 %load_z to i32 %tmpVar = add i32 %1, 1 %2 = trunc i32 %tmpVar to i16 - store i16 %2, i16* %y, align 2 + store i16 %2, i16* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_long_date_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_long_date_assignment.snap index f2fcbf7e1f7..fe85d5403c2 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_long_date_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_long_date_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,13 +17,13 @@ entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 3 - store i64 100012006003, i64* %w, align 8 - store i64 100012006003, i64* %w, align 8 - store i64 465436800000000000, i64* %x, align 8 - store i64 0, i64* %x, align 8 - store i64 465509714000000000, i64* %y, align 8 - store i64 58804123456789, i64* %y, align 8 - store i64 56190999999999, i64* %z, align 8 - store i64 56190123456000, i64* %z, align 8 + store i64 100012006003, i64* %w, align [filtered] + store i64 100012006003, i64* %w, align [filtered] + store i64 465436800000000000, i64* %x, align [filtered] + store i64 0, i64* %x, align [filtered] + store i64 465509714000000000, i64* %y, align [filtered] + store i64 58804123456789, i64* %y, align [filtered] + store i64 56190999999999, i64* %z, align [filtered] + store i64 56190123456000, i64* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_negated_combined_expressions_generates_void_function_and_struct_and_body.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_negated_combined_expressions_generates_void_function_and_struct_and_body.snap index a9a5d11a9e4..a2656a7b918 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_negated_combined_expressions_generates_void_function_and_struct_and_body.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_negated_combined_expressions_generates_void_function_and_struct_and_body.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,24 +15,24 @@ define void @prg(%prg* %0) { entry: %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_y = load i8, i8* %y, align 1 + %load_y = load i8, i8* %y, align [filtered] %1 = icmp ne i8 %load_y, 0 br i1 %1, label %2, label %3 2: ; preds = %entry - %load_z = load i32, i32* %z, align 4 + %load_z = load i32, i32* %z, align [filtered] %tmpVar = icmp sge i32 %load_z, 5 br label %3 3: ; preds = %2, %entry %4 = phi i1 [ %1, %entry ], [ %tmpVar, %2 ] - %load_z1 = load i32, i32* %z, align 4 + %load_z1 = load i32, i32* %z, align [filtered] %tmpVar2 = icmp sle i32 %load_z1, 6 %tmpVar3 = xor i1 %tmpVar2, true br i1 %tmpVar3, label %7, label %5 5: ; preds = %3 - %load_y4 = load i8, i8* %y, align 1 + %load_y4 = load i8, i8* %y, align [filtered] %6 = icmp ne i8 %load_y4, 0 br label %7 diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_negated_expressions_generates_void_function_and_struct_and_body.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_negated_expressions_generates_void_function_and_struct_and_body.snap index 6a541e8e96d..1ad1d05fb61 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_negated_expressions_generates_void_function_and_struct_and_body.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_negated_expressions_generates_void_function_and_struct_and_body.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,15 +15,15 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i8, i8* %x, align 1 + %load_x = load i8, i8* %x, align [filtered] %1 = icmp ne i8 %load_x, 0 %tmpVar = xor i1 %1, true - %load_x1 = load i8, i8* %x, align 1 + %load_x1 = load i8, i8* %x, align [filtered] %2 = icmp ne i8 %load_x1, 0 br i1 %2, label %3, label %5 3: ; preds = %entry - %load_y = load i8, i8* %y, align 1 + %load_y = load i8, i8* %y, align [filtered] %4 = icmp ne i8 %load_y, 0 %tmpVar2 = xor i1 %4, true br label %5 diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_or_statement.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_or_statement.snap index 014e146ab7a..e7138d64ee5 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_or_statement.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_or_statement.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,12 +15,12 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i8, i8* %x, align 1 + %load_x = load i8, i8* %x, align [filtered] %1 = icmp ne i8 %load_x, 0 br i1 %1, label %4, label %2 2: ; preds = %entry - %load_y = load i8, i8* %y, align 1 + %load_y = load i8, i8* %y, align [filtered] %3 = icmp ne i8 %load_y, 0 br label %4 diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_additions.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_additions.snap index c40b5c61aab..3f28f3a534a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_additions.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_additions.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,11 +16,11 @@ entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - store float 1.237500e+01, float* %x, align 4 - store float 2.500000e-01, float* %y, align 4 - %load_x = load float, float* %x, align 4 - %load_y = load float, float* %y, align 4 + store float 1.237500e+01, float* %x, align [filtered] + store float 2.500000e-01, float* %y, align [filtered] + %load_x = load float, float* %x, align [filtered] + %load_y = load float, float* %y, align [filtered] %tmpVar = fadd float %load_x, %load_y - store float %tmpVar, float* %z, align 4 + store float %tmpVar, float* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_assignment.snap index 5591466b756..f1a62603516 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,8 +14,8 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store float 1.562500e-01, float* %y, align 4 - store float 1.000000e+02, float* %y, align 4 - store float 1.000000e+03, float* %y, align 4 + store float 1.562500e-01, float* %y, align [filtered] + store float 1.000000e+02, float* %y, align [filtered] + store float 1.000000e+03, float* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_cast_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_cast_assignment.snap index 793006bdf45..7434fe98388 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_cast_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_real_cast_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,8 +15,8 @@ define void @prg(%prg* %0) { entry: %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i16, i16* %x, align 2 + %load_x = load i16, i16* %x, align [filtered] %1 = sitofp i16 %load_x to float - store float %1, float* %y, align 4 + store float %1, float* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_signed_combined_expressions.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_signed_combined_expressions.snap index 0f1ac9daf0c..a8ee03a5cb8 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_signed_combined_expressions.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_signed_combined_expressions.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,12 +15,12 @@ define void @prg(%prg* %0) { entry: %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_z = load i32, i32* %z, align 4 + %load_z = load i32, i32* %z, align [filtered] %tmpVar = add i32 -1, %load_z - %load_z1 = load i32, i32* %z, align 4 + %load_z1 = load i32, i32* %z, align [filtered] %tmpVar2 = sub i32 0, %load_z1 %tmpVar3 = add i32 2, %tmpVar2 - %load_y = load i32, i32* %y, align 4 + %load_y = load i32, i32* %y, align [filtered] %tmpVar4 = sub i32 0, %load_y %tmpVar5 = add i32 %tmpVar4, 3 ret void diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_special_chars_in_string.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_special_chars_in_string.snap index 62fb521e51e..6e66e0cff78 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_special_chars_in_string.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_special_chars_in_string.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -23,13 +22,13 @@ entry: %should_replace_ws = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %should_not_replace_ws = getelementptr inbounds %prg, %prg* %0, i32 0, i32 3 %1 = bitcast [81 x i8]* %should_replace_s to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([41 x i8], [41 x i8]* @utf08_literal_1, i32 0, i32 0), i32 41, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([41 x i8], [41 x i8]* @utf08_literal_1, i32 0, i32 0), i32 41, i1 false) %2 = bitcast [81 x i8]* %should_not_replace_s to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %2, i8* align 1 getelementptr inbounds ([19 x i8], [19 x i8]* @utf08_literal_0, i32 0, i32 0), i32 19, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] getelementptr inbounds ([19 x i8], [19 x i8]* @utf08_literal_0, i32 0, i32 0), i32 19, i1 false) %3 = bitcast [81 x i16]* %should_replace_ws to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %3, i8* align 2 bitcast ([41 x i16]* @utf16_literal_1 to i8*), i32 82, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] bitcast ([41 x i16]* @utf16_literal_1 to i8*), i32 82, i1 false) %4 = bitcast [81 x i16]* %should_not_replace_ws to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %4, i8* align 2 bitcast ([19 x i16]* @utf16_literal_0 to i8*), i32 38, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %4, i8* align [filtered] bitcast ([19 x i16]* @utf16_literal_0 to i8*), i32 38, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_string_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_string_assignment.snap index 65c413ffe7e..3e534ac519d 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_string_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_string_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -19,9 +18,9 @@ entry: %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %1 = bitcast [81 x i8]* %y to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([12 x i8], [12 x i8]* @utf08_literal_0, i32 0, i32 0), i32 12, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([12 x i8], [12 x i8]* @utf08_literal_0, i32 0, i32 0), i32 12, i1 false) %2 = bitcast [81 x i16]* %z to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %2, i8* align 2 bitcast ([18 x i16]* @utf16_literal_0 to i8*), i32 36, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] bitcast ([18 x i16]* @utf16_literal_0 to i8*), i32 36, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_time_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_time_assignment.snap index 985138e91d5..d6e39cec1e7 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_time_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_time_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,14 +14,14 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i64 0, i64* %y, align 8 - store i64 43200000000000, i64* %y, align 8 - store i64 100000000, i64* %y, align 8 - store i64 100000000, i64* %y, align 8 - store i64 1000000, i64* %y, align 8 - store i64 -1000, i64* %y, align 8 - store i64 1, i64* %y, align 8 - store i64 -86400001000000, i64* %y, align 8 - store i64 8640000001000000, i64* %y, align 8 + store i64 0, i64* %y, align [filtered] + store i64 43200000000000, i64* %y, align [filtered] + store i64 100000000, i64* %y, align [filtered] + store i64 100000000, i64* %y, align [filtered] + store i64 1000000, i64* %y, align [filtered] + store i64 -1000, i64* %y, align [filtered] + store i64 1, i64* %y, align [filtered] + store i64 -86400001000000, i64* %y, align [filtered] + store i64 8640000001000000, i64* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_time_of_day_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_time_of_day_assignment.snap index 3b832ddc391..f44eda2e170 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_time_of_day_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_time_of_day_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,13 +14,13 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i64 0, i64* %y, align 8 - store i64 3600000000000, i64* %y, align 8 - store i64 3600001000000, i64* %y, align 8 - store i64 3661000000000, i64* %y, align 8 - store i64 72900000000000, i64* %y, align 8 - store i64 72900000000000, i64* %y, align 8 - store i64 40260000000000, i64* %y, align 8 - store i64 40260000000000, i64* %y, align 8 + store i64 0, i64* %y, align [filtered] + store i64 3600000000000, i64* %y, align [filtered] + store i64 3600001000000, i64* %y, align [filtered] + store i64 3661000000000, i64* %y, align [filtered] + store i64 72900000000000, i64* %y, align [filtered] + store i64 72900000000000, i64* %y, align [filtered] + store i64 40260000000000, i64* %y, align [filtered] + store i64 40260000000000, i64* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_two_explicit_parameters_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_two_explicit_parameters_called_in_program.snap index 5a4ff5bc649..5e3af073dce 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_two_explicit_parameters_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_two_explicit_parameters_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -23,8 +22,8 @@ entry: define void @prg(%prg* %0) { entry: - store i8 1, i8* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 1), align 1 - store i32 2, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align 4 + store i8 1, i8* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 1), align [filtered] + store i32 2, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align [filtered] call void @foo(%foo* @foo_instance) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_two_parameters_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_two_parameters_called_in_program.snap index 87014b1019a..8381dcd6afc 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_two_parameters_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_two_parameters_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -23,8 +22,8 @@ entry: define void @prg(%prg* %0) { entry: - store i32 2, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align 4 - store i8 1, i8* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 1), align 1 + store i32 2, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align [filtered] + store i8 1, i8* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 1), align [filtered] call void @foo(%foo* @foo_instance) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_inout_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_inout_called_in_program.snap index 13ec1ddeea2..22a4ef35947 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_inout_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_inout_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,19 +16,19 @@ target triple = "[filtered]" define void @foo(%foo* %0) { entry: %inout = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %deref = load i32*, i32** %inout, align 8 - %deref1 = load i32*, i32** %inout, align 8 - %load_inout = load i32, i32* %deref1, align 4 + %deref = load i32*, i32** %inout, align [filtered] + %deref1 = load i32*, i32** %inout, align [filtered] + %load_inout = load i32, i32* %deref1, align [filtered] %tmpVar = add i32 %load_inout, 1 - store i32 %tmpVar, i32* %deref, align 4 + store i32 %tmpVar, i32* %deref, align [filtered] ret void } define void @prg(%prg* %0) { entry: %baz = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 7, i32* %baz, align 4 - store i32* %baz, i32** getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align 8 + store i32 7, i32* %baz, align [filtered] + store i32* %baz, i32** getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align [filtered] call void @foo(%foo* @foo_instance) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_out_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_out_called_in_program.snap index c297d79ecd5..20443705d8e 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_out_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_out_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -24,9 +23,9 @@ entry: define void @prg(%prg* %0) { entry: %baz = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 2, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align 4 + store i32 2, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align [filtered] call void @foo(%foo* @foo_instance) - %1 = load i8, i8* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 1), align 1 - store i8 %1, i8* %baz, align 1 + %1 = load i8, i8* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 1), align [filtered] + store i8 %1, i8* %baz, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_out_called_mixed_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_out_called_mixed_in_program.snap index c297d79ecd5..20443705d8e 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_out_called_mixed_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_var_out_called_mixed_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -24,9 +23,9 @@ entry: define void @prg(%prg* %0) { entry: %baz = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 2, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align 4 + store i32 2, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align [filtered] call void @foo(%foo* @foo_instance) - %1 = load i8, i8* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 1), align 1 - store i8 %1, i8* %baz, align 1 + %1 = load i8, i8* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 1), align [filtered] + store i8 %1, i8* %baz, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_addition_literal_generates_void_function_and_struct_and_body.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_addition_literal_generates_void_function_and_struct_and_body.snap index 2bc0788d257..54ac0413c25 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_addition_literal_generates_void_function_and_struct_and_body.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_addition_literal_generates_void_function_and_struct_and_body.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,7 +14,7 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %tmpVar = add i32 %load_x, 7 ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_arithmatic_assignment_generates_void_function_and_struct_and_body.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_arithmatic_assignment_generates_void_function_and_struct_and_body.snap index 578c4abbad0..b8b6feb58d9 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_arithmatic_assignment_generates_void_function_and_struct_and_body.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_arithmatic_assignment_generates_void_function_and_struct_and_body.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,20 +15,20 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %tmpVar = add i32 %load_x, 1 - store i32 %tmpVar, i32* %y, align 4 - %load_x1 = load i32, i32* %x, align 4 + store i32 %tmpVar, i32* %y, align [filtered] + %load_x1 = load i32, i32* %x, align [filtered] %tmpVar2 = sub i32 %load_x1, 2 - store i32 %tmpVar2, i32* %y, align 4 - %load_x3 = load i32, i32* %x, align 4 + store i32 %tmpVar2, i32* %y, align [filtered] + %load_x3 = load i32, i32* %x, align [filtered] %tmpVar4 = mul i32 %load_x3, 3 - store i32 %tmpVar4, i32* %y, align 4 - %load_x5 = load i32, i32* %x, align 4 + store i32 %tmpVar4, i32* %y, align [filtered] + %load_x5 = load i32, i32* %x, align [filtered] %tmpVar6 = sdiv i32 %load_x5, 4 - store i32 %tmpVar6, i32* %y, align 4 - %load_x7 = load i32, i32* %x, align 4 + store i32 %tmpVar6, i32* %y, align [filtered] + %load_x7 = load i32, i32* %x, align [filtered] %tmpVar8 = srem i32 %load_x7, 5 - store i32 %tmpVar8, i32* %y, align 4 + store i32 %tmpVar8, i32* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_comparison_assignment_generates_void_function_and_struct_and_body.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_comparison_assignment_generates_void_function_and_struct_and_body.snap index 1a76e97c33e..241b0afcfd5 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_comparison_assignment_generates_void_function_and_struct_and_body.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_and_comparison_assignment_generates_void_function_and_struct_and_body.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,29 +15,29 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %tmpVar = icmp eq i32 %load_x, 1 %1 = zext i1 %tmpVar to i8 - store i8 %1, i8* %y, align 1 - %load_x1 = load i32, i32* %x, align 4 + store i8 %1, i8* %y, align [filtered] + %load_x1 = load i32, i32* %x, align [filtered] %tmpVar2 = icmp sgt i32 %load_x1, 2 %2 = zext i1 %tmpVar2 to i8 - store i8 %2, i8* %y, align 1 - %load_x3 = load i32, i32* %x, align 4 + store i8 %2, i8* %y, align [filtered] + %load_x3 = load i32, i32* %x, align [filtered] %tmpVar4 = icmp slt i32 %load_x3, 3 %3 = zext i1 %tmpVar4 to i8 - store i8 %3, i8* %y, align 1 - %load_x5 = load i32, i32* %x, align 4 + store i8 %3, i8* %y, align [filtered] + %load_x5 = load i32, i32* %x, align [filtered] %tmpVar6 = icmp ne i32 %load_x5, 4 %4 = zext i1 %tmpVar6 to i8 - store i8 %4, i8* %y, align 1 - %load_x7 = load i32, i32* %x, align 4 + store i8 %4, i8* %y, align [filtered] + %load_x7 = load i32, i32* %x, align [filtered] %tmpVar8 = icmp sge i32 %load_x7, 5 %5 = zext i1 %tmpVar8 to i8 - store i8 %5, i8* %y, align 1 - %load_x9 = load i32, i32* %x, align 4 + store i8 %5, i8* %y, align [filtered] + %load_x9 = load i32, i32* %x, align [filtered] %tmpVar10 = icmp sle i32 %load_x9, 6 %6 = zext i1 %tmpVar10 to i8 - store i8 %6, i8* %y, align 1 + store i8 %6, i8* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_assignment_generates_void_function_and_struct_and_body.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_assignment_generates_void_function_and_struct_and_body.snap index 6a424f10d49..8b5cb51e7ff 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_assignment_generates_void_function_and_struct_and_body.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variable_assignment_generates_void_function_and_struct_and_body.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,6 +14,6 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 7, i32* %y, align 4 + store i32 7, i32* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variables_and_additions_generates_void_function_and_struct_and_body.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variables_and_additions_generates_void_function_and_struct_and_body.snap index 699e99e7f52..8bf05a6b9a4 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variables_and_additions_generates_void_function_and_struct_and_body.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variables_and_additions_generates_void_function_and_struct_and_body.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,8 +15,8 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i32, i32* %x, align 4 - %load_y = load i32, i32* %y, align 4 + %load_x = load i32, i32* %x, align [filtered] + %load_y = load i32, i32* %y, align [filtered] %tmpVar = add i32 %load_x, %load_y ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variables_and_references_generates_void_function_and_struct_and_body.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variables_and_references_generates_void_function_and_struct_and_body.snap index c581c13ce15..f12ef811484 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variables_and_references_generates_void_function_and_struct_and_body.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_variables_and_references_generates_void_function_and_struct_and_body.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,7 +15,7 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i32, i32* %x, align 4 - %load_y = load i32, i32* %y, align 4 + %load_x = load i32, i32* %x, align [filtered] + %load_y = load i32, i32* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_xor_statement.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_xor_statement.snap index bb6472a7d36..fdc2763fd0d 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_xor_statement.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__program_with_xor_statement.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,12 +16,12 @@ entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_x = load i8, i8* %x, align 1 + %load_x = load i8, i8* %x, align [filtered] %1 = icmp ne i8 %load_x, 0 - %load_y = load i8, i8* %y, align 1 + %load_y = load i8, i8* %y, align [filtered] %2 = icmp ne i8 %load_y, 0 %3 = xor i1 %1, %2 %4 = zext i1 %3 to i8 - store i8 %4, i8* %z, align 1 + store i8 %4, i8* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_action_from_fb_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_action_from_fb_called_in_program.snap index dba4041c475..06ce85bfb00 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_action_from_fb_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_action_from_fb_called_in_program.snap @@ -22,17 +22,17 @@ entry: define void @fb(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %x = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 ret void } define void @fb__foo(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %x = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 - store i32 2, i32* %x, align 4 + store i32 2, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_foreign_action_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_foreign_action_called_in_program.snap index 7a8417bc545..9773448ff92 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_foreign_action_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_foreign_action_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -29,6 +28,6 @@ entry: define void @prg__foo(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 2, i32* %x, align 4 + store i32 2, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_local_action_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_local_action_called_in_program.snap index fd348dbeca4..061d0be6aa0 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_local_action_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__qualified_local_action_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -22,6 +21,6 @@ entry: define void @prg__foo(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 2, i32* %x, align 4 + store i32 2, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__real_function_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__real_function_called_in_program.snap index d037f5d808d..60f742eed6a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__real_function_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__real_function_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,10 +13,10 @@ target triple = "[filtered]" define float @foo() { entry: - %foo = alloca float, align 4 - store float 0.000000e+00, float* %foo, align 4 - store float 1.000000e+00, float* %foo, align 4 - %foo_ret = load float, float* %foo, align 4 + %foo = alloca float, align [filtered] + store float 0.000000e+00, float* %foo, align [filtered] + store float 1.000000e+00, float* %foo, align [filtered] + %foo_ret = load float, float* %foo, align [filtered] ret float %foo_ret } @@ -26,6 +25,6 @@ entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %call = call float @foo() %1 = fptosi float %call to i32 - store i32 %1, i32* %x, align 4 + store i32 %1, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__reference_qualified_name.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__reference_qualified_name.snap index 9e0745f30ae..1efb79b602e 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__reference_qualified_name.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__reference_qualified_name.snap @@ -17,8 +17,8 @@ target triple = "[filtered]" define void @fb(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %x = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 ret void } @@ -34,11 +34,11 @@ entry: define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - %load_x = load i32, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align 4 - store i32 %load_x, i32* %x, align 4 - %load_y = load i32, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 1), align 4 - store i32 %load_y, i32* %x, align 4 - %load_x1 = load i32, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 2, i32 0), align 4 - store i32 %load_x1, i32* %x, align 4 + %load_x = load i32, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 0), align [filtered] + store i32 %load_x, i32* %x, align [filtered] + %load_y = load i32, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 1), align [filtered] + store i32 %load_y, i32* %x, align [filtered] + %load_x1 = load i32, i32* getelementptr inbounds (%foo, %foo* @foo_instance, i32 0, i32 2, i32 0), align [filtered] + store i32 %load_x1, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__reference_to_reference_assignments_in_function_arguments.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__reference_to_reference_assignments_in_function_arguments.snap index 5479ae3fafd..9e888a62941 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__reference_to_reference_assignments_in_function_arguments.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__reference_to_reference_assignments_in_function_arguments.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -31,11 +30,11 @@ entry: define void @main(%main* %0) { entry: - store %STRUCT_params* @global1, %STRUCT_params** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align 8 - store %STRUCT_params* @global2, %STRUCT_params** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align 8 + store %STRUCT_params* @global1, %STRUCT_params** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align [filtered] + store %STRUCT_params* @global2, %STRUCT_params** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align [filtered] call void @prog(%prog* @prog_instance) - store %STRUCT_params* bitcast (i32* @global4 to %STRUCT_params*), %STRUCT_params** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align 8 - store %STRUCT_params* bitcast ([81 x i8]* @global5 to %STRUCT_params*), %STRUCT_params** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align 8 + store %STRUCT_params* bitcast (i32* @global4 to %STRUCT_params*), %STRUCT_params** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align [filtered] + store %STRUCT_params* bitcast ([81 x i8]* @global5 to %STRUCT_params*), %STRUCT_params** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align [filtered] call void @prog(%prog* @prog_instance) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__repeat_statement.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__repeat_statement.snap index d2fe88fc4b9..92217451b68 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__repeat_statement.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__repeat_statement.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -21,8 +20,8 @@ condition_check: ; preds = %entry, %continue1 br i1 true, label %while_body, label %continue while_body: ; preds = %condition_check - %load_x = load i8, i8* %x, align 1 - %load_x2 = load i8, i8* %x, align 1 + %load_x = load i8, i8* %x, align [filtered] + %load_x2 = load i8, i8* %x, align [filtered] %1 = icmp ne i8 %load_x2, 0 br i1 %1, label %condition_body, label %continue1 diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__returning_early_in_function.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__returning_early_in_function.snap index 96a323b1f3b..2855d353475 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__returning_early_in_function.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__returning_early_in_function.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,11 +9,11 @@ target triple = "[filtered]" define i16 @smaller_than_ten(i8 %0) { entry: - %smaller_than_ten = alloca i16, align 2 - %n = alloca i8, align 1 - store i8 %0, i8* %n, align 1 - store i16 0, i16* %smaller_than_ten, align 2 - %load_n = load i8, i8* %n, align 1 + %smaller_than_ten = alloca i16, align [filtered] + %n = alloca i8, align [filtered] + store i8 %0, i8* %n, align [filtered] + store i16 0, i16* %smaller_than_ten, align [filtered] + %load_n = load i8, i8* %n, align [filtered] %1 = sext i8 %load_n to i32 %tmpVar = icmp slt i32 %1, 10 %2 = zext i1 %tmpVar to i8 @@ -22,13 +21,13 @@ entry: br i1 %3, label %condition_body, label %continue condition_body: ; preds = %entry - %smaller_than_ten_ret = load i16, i16* %smaller_than_ten, align 2 + %smaller_than_ten_ret = load i16, i16* %smaller_than_ten, align [filtered] ret i16 %smaller_than_ten_ret buffer_block: ; No predecessors! br label %continue continue: ; preds = %buffer_block, %entry - %smaller_than_ten_ret1 = load i16, i16* %smaller_than_ten, align 2 + %smaller_than_ten_ret1 = load i16, i16* %smaller_than_ten, align [filtered] ret i16 %smaller_than_ten_ret1 } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__returning_early_in_function_block.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__returning_early_in_function_block.snap index 8dd4a9326e7..7d9e0723a60 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__returning_early_in_function_block.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__returning_early_in_function_block.snap @@ -13,10 +13,10 @@ target triple = "[filtered]" define void @abcdef(%abcdef* %0) { entry: - %this = alloca %abcdef*, align 8 - store %abcdef* %0, %abcdef** %this, align 8 + %this = alloca %abcdef*, align [filtered] + store %abcdef* %0, %abcdef** %this, align [filtered] %n = getelementptr inbounds %abcdef, %abcdef* %0, i32 0, i32 0 - %load_n = load i8, i8* %n, align 1 + %load_n = load i8, i8* %n, align [filtered] %1 = sext i8 %load_n to i32 %tmpVar = icmp slt i32 %1, 10 %2 = zext i1 %tmpVar to i8 diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__simple_case_i8_statement.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__simple_case_i8_statement.snap index dd1dbba306b..9c4303b60e2 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__simple_case_i8_statement.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__simple_case_i8_statement.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,7 +15,7 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i8, i8* %x, align 1 + %load_x = load i8, i8* %x, align [filtered] switch i8 %load_x, label %else [ i8 1, label %case i8 2, label %case1 @@ -24,19 +23,19 @@ entry: ] case: ; preds = %entry - store i8 1, i8* %y, align 1 + store i8 1, i8* %y, align [filtered] br label %continue case1: ; preds = %entry - store i8 2, i8* %y, align 1 + store i8 2, i8* %y, align [filtered] br label %continue case2: ; preds = %entry - store i8 3, i8* %y, align 1 + store i8 3, i8* %y, align [filtered] br label %continue else: ; preds = %entry - store i8 0, i8* %y, align 1 + store i8 0, i8* %y, align [filtered] br label %continue continue: ; preds = %else, %case2, %case1, %case diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__simple_case_statement.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__simple_case_statement.snap index bda1c655a18..9904ae2862c 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__simple_case_statement.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__simple_case_statement.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,7 +15,7 @@ define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] switch i32 %load_x, label %else [ i32 1, label %case i32 2, label %case1 @@ -24,19 +23,19 @@ entry: ] case: ; preds = %entry - store i32 1, i32* %y, align 4 + store i32 1, i32* %y, align [filtered] br label %continue case1: ; preds = %entry - store i32 2, i32* %y, align 4 + store i32 2, i32* %y, align [filtered] br label %continue case2: ; preds = %entry - store i32 3, i32* %y, align 4 + store i32 3, i32* %y, align [filtered] br label %continue else: ; preds = %entry - store i32 -1, i32* %y, align 4 + store i32 -1, i32* %y, align [filtered] br label %continue continue: ; preds = %else, %case2, %case1, %case diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sizeof_works_in_binary_expression_with_different_size.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sizeof_works_in_binary_expression_with_different_size.snap index 29dffaf5d9f..78042cba8e6 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sizeof_works_in_binary_expression_with_different_size.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sizeof_works_in_binary_expression_with_different_size.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,19 +9,19 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %i = alloca i32, align 4 - %j = alloca i16, align 2 - %arr_ptr = alloca [3 x float]*, align 8 - store i32 0, i32* %i, align 4 - store i16 0, i16* %j, align 2 - store [3 x float]* null, [3 x float]** %arr_ptr, align 8 - store i32 0, i32* %main, align 4 - %load_j = load i16, i16* %j, align 2 + %main = alloca i32, align [filtered] + %i = alloca i32, align [filtered] + %j = alloca i16, align [filtered] + %arr_ptr = alloca [3 x float]*, align [filtered] + store i32 0, i32* %i, align [filtered] + store i16 0, i16* %j, align [filtered] + store [3 x float]* null, [3 x float]** %arr_ptr, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_j = load i16, i16* %j, align [filtered] %0 = zext i16 %load_j to i64 %tmpVar = sub i64 %0, ptrtoint ([3 x float]** getelementptr ([3 x float]*, [3 x float]** null, i32 1) to i64) %1 = trunc i64 %tmpVar to i32 - store i32 %1, i32* %i, align 4 - %main_ret = load i32, i32* %main, align 4 + store i32 %1, i32* %i, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__structs_members_can_be_referenced.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__structs_members_can_be_referenced.snap index 748b21e483b..43344ca469d 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__structs_members_can_be_referenced.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__structs_members_can_be_referenced.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,6 +17,6 @@ define void @MainProg(%MainProg* %0) { entry: %Cord = getelementptr inbounds %MainProg, %MainProg* %0, i32 0, i32 0 %a = getelementptr inbounds %MyStruct, %MyStruct* %Cord, i32 0, i32 0 - store i32 0, i32* %a, align 4 + store i32 0, i32* %a, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_check_functions.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_check_functions.snap index b57788ef670..f05e6735586 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_check_functions.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_check_functions.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,61 +13,61 @@ target triple = "[filtered]" define i32 @CheckRangeSigned(i32 %0, i32 %1, i32 %2) { entry: - %CheckRangeSigned = alloca i32, align 4 - %v = alloca i32, align 4 - store i32 %0, i32* %v, align 4 - %low = alloca i32, align 4 - store i32 %1, i32* %low, align 4 - %up = alloca i32, align 4 - store i32 %2, i32* %up, align 4 - store i32 0, i32* %CheckRangeSigned, align 4 - store i32 -7, i32* %CheckRangeSigned, align 4 - %CheckRangeSigned_ret = load i32, i32* %CheckRangeSigned, align 4 + %CheckRangeSigned = alloca i32, align [filtered] + %v = alloca i32, align [filtered] + store i32 %0, i32* %v, align [filtered] + %low = alloca i32, align [filtered] + store i32 %1, i32* %low, align [filtered] + %up = alloca i32, align [filtered] + store i32 %2, i32* %up, align [filtered] + store i32 0, i32* %CheckRangeSigned, align [filtered] + store i32 -7, i32* %CheckRangeSigned, align [filtered] + %CheckRangeSigned_ret = load i32, i32* %CheckRangeSigned, align [filtered] ret i32 %CheckRangeSigned_ret } define i32 @CheckRangeUnsigned(i32 %0, i32 %1, i32 %2) { entry: - %CheckRangeUnsigned = alloca i32, align 4 - %v = alloca i32, align 4 - store i32 %0, i32* %v, align 4 - %low = alloca i32, align 4 - store i32 %1, i32* %low, align 4 - %up = alloca i32, align 4 - store i32 %2, i32* %up, align 4 - store i32 0, i32* %CheckRangeUnsigned, align 4 - store i32 7, i32* %CheckRangeUnsigned, align 4 - %CheckRangeUnsigned_ret = load i32, i32* %CheckRangeUnsigned, align 4 + %CheckRangeUnsigned = alloca i32, align [filtered] + %v = alloca i32, align [filtered] + store i32 %0, i32* %v, align [filtered] + %low = alloca i32, align [filtered] + store i32 %1, i32* %low, align [filtered] + %up = alloca i32, align [filtered] + store i32 %2, i32* %up, align [filtered] + store i32 0, i32* %CheckRangeUnsigned, align [filtered] + store i32 7, i32* %CheckRangeUnsigned, align [filtered] + %CheckRangeUnsigned_ret = load i32, i32* %CheckRangeUnsigned, align [filtered] ret i32 %CheckRangeUnsigned_ret } define i64 @CheckLRangeSigned(i64 %0, i64 %1, i64 %2) { entry: - %CheckLRangeSigned = alloca i64, align 8 - %v = alloca i64, align 8 - store i64 %0, i64* %v, align 8 - %low = alloca i64, align 8 - store i64 %1, i64* %low, align 8 - %up = alloca i64, align 8 - store i64 %2, i64* %up, align 8 - store i64 0, i64* %CheckLRangeSigned, align 8 - store i64 -77, i64* %CheckLRangeSigned, align 8 - %CheckLRangeSigned_ret = load i64, i64* %CheckLRangeSigned, align 8 + %CheckLRangeSigned = alloca i64, align [filtered] + %v = alloca i64, align [filtered] + store i64 %0, i64* %v, align [filtered] + %low = alloca i64, align [filtered] + store i64 %1, i64* %low, align [filtered] + %up = alloca i64, align [filtered] + store i64 %2, i64* %up, align [filtered] + store i64 0, i64* %CheckLRangeSigned, align [filtered] + store i64 -77, i64* %CheckLRangeSigned, align [filtered] + %CheckLRangeSigned_ret = load i64, i64* %CheckLRangeSigned, align [filtered] ret i64 %CheckLRangeSigned_ret } define i64 @CheckLRangeUnsigned(i64 %0, i64 %1, i64 %2) { entry: - %CheckLRangeUnsigned = alloca i64, align 8 - %v = alloca i64, align 8 - store i64 %0, i64* %v, align 8 - %low = alloca i64, align 8 - store i64 %1, i64* %low, align 8 - %up = alloca i64, align 8 - store i64 %2, i64* %up, align 8 - store i64 0, i64* %CheckLRangeUnsigned, align 8 - store i64 77, i64* %CheckLRangeUnsigned, align 8 - %CheckLRangeUnsigned_ret = load i64, i64* %CheckLRangeUnsigned, align 8 + %CheckLRangeUnsigned = alloca i64, align [filtered] + %v = alloca i64, align [filtered] + store i64 %0, i64* %v, align [filtered] + %low = alloca i64, align [filtered] + store i64 %1, i64* %low, align [filtered] + %up = alloca i64, align [filtered] + store i64 %2, i64* %up, align [filtered] + store i64 0, i64* %CheckLRangeUnsigned, align [filtered] + store i64 77, i64* %CheckLRangeUnsigned, align [filtered] + %CheckLRangeUnsigned_ret = load i64, i64* %CheckLRangeUnsigned, align [filtered] ret i64 %CheckLRangeUnsigned_ret } @@ -86,29 +85,29 @@ entry: %j = getelementptr inbounds %main, %main* %0, i32 0, i32 9 %call = call i32 @CheckRangeUnsigned(i32 1, i32 0, i32 100) %1 = trunc i32 %call to i8 - store i8 %1, i8* %a, align 1 + store i8 %1, i8* %a, align [filtered] %call1 = call i32 @CheckRangeSigned(i32 1, i32 -100, i32 100) %2 = trunc i32 %call1 to i8 - store i8 %2, i8* %b, align 1 + store i8 %2, i8* %b, align [filtered] %call2 = call i32 @CheckRangeUnsigned(i32 1, i32 0, i32 100) %3 = trunc i32 %call2 to i8 - store i8 %3, i8* %c, align 1 + store i8 %3, i8* %c, align [filtered] %call3 = call i32 @CheckRangeUnsigned(i32 1, i32 0, i32 100) %4 = trunc i32 %call3 to i16 - store i16 %4, i16* %d, align 2 + store i16 %4, i16* %d, align [filtered] %call4 = call i32 @CheckRangeSigned(i32 1, i32 -100, i32 100) %5 = trunc i32 %call4 to i16 - store i16 %5, i16* %e, align 2 + store i16 %5, i16* %e, align [filtered] %call5 = call i32 @CheckRangeUnsigned(i32 1, i32 0, i32 100) %6 = trunc i32 %call5 to i16 - store i16 %6, i16* %f, align 2 + store i16 %6, i16* %f, align [filtered] %call6 = call i32 @CheckRangeSigned(i32 1, i32 -100, i32 100) - store i32 %call6, i32* %g, align 4 + store i32 %call6, i32* %g, align [filtered] %call7 = call i32 @CheckRangeUnsigned(i32 1, i32 0, i32 100) - store i32 %call7, i32* %h, align 4 + store i32 %call7, i32* %h, align [filtered] %call8 = call i64 @CheckLRangeSigned(i64 1, i64 -100, i64 100) - store i64 %call8, i64* %i, align 8 + store i64 %call8, i64* %i, align [filtered] %call9 = call i64 @CheckLRangeUnsigned(i64 1, i64 0, i64 100) - store i64 %call9, i64* %j, align 8 + store i64 %call9, i64* %j, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_type_calls_check_function_missing.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_type_calls_check_function_missing.snap index c24c891f747..71fc2dda8da 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_type_calls_check_function_missing.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_type_calls_check_function_missing.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,23 +13,23 @@ target triple = "[filtered]" define i16 @Check_XX_RangeSigned(i16 %0, i16 %1, i16 %2) { entry: - %Check_XX_RangeSigned = alloca i16, align 2 - %value = alloca i16, align 2 - store i16 %0, i16* %value, align 2 - %lower = alloca i16, align 2 - store i16 %1, i16* %lower, align 2 - %upper = alloca i16, align 2 - store i16 %2, i16* %upper, align 2 - store i16 0, i16* %Check_XX_RangeSigned, align 2 - %load_value = load i16, i16* %value, align 2 - store i16 %load_value, i16* %Check_XX_RangeSigned, align 2 - %Check_XX_RangeSigned_ret = load i16, i16* %Check_XX_RangeSigned, align 2 + %Check_XX_RangeSigned = alloca i16, align [filtered] + %value = alloca i16, align [filtered] + store i16 %0, i16* %value, align [filtered] + %lower = alloca i16, align [filtered] + store i16 %1, i16* %lower, align [filtered] + %upper = alloca i16, align [filtered] + store i16 %2, i16* %upper, align [filtered] + store i16 0, i16* %Check_XX_RangeSigned, align [filtered] + %load_value = load i16, i16* %value, align [filtered] + store i16 %load_value, i16* %Check_XX_RangeSigned, align [filtered] + %Check_XX_RangeSigned_ret = load i16, i16* %Check_XX_RangeSigned, align [filtered] ret i16 %Check_XX_RangeSigned_ret } define void @Main(%Main* %0) { entry: %x = getelementptr inbounds %Main, %Main* %0, i32 0, i32 0 - store i16 7, i16* %x, align 2 + store i16 7, i16* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_type_calls_check_function_on_assigment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_type_calls_check_function_on_assigment.snap index d29b80e3bac..5a3e335d1bc 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_type_calls_check_function_on_assigment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__sub_range_type_calls_check_function_on_assigment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,17 +13,17 @@ target triple = "[filtered]" define i16 @CheckRangeSigned(i16 %0, i16 %1, i16 %2) { entry: - %CheckRangeSigned = alloca i16, align 2 - %value = alloca i16, align 2 - store i16 %0, i16* %value, align 2 - %lower = alloca i16, align 2 - store i16 %1, i16* %lower, align 2 - %upper = alloca i16, align 2 - store i16 %2, i16* %upper, align 2 - store i16 0, i16* %CheckRangeSigned, align 2 - %load_value = load i16, i16* %value, align 2 - store i16 %load_value, i16* %CheckRangeSigned, align 2 - %CheckRangeSigned_ret = load i16, i16* %CheckRangeSigned, align 2 + %CheckRangeSigned = alloca i16, align [filtered] + %value = alloca i16, align [filtered] + store i16 %0, i16* %value, align [filtered] + %lower = alloca i16, align [filtered] + store i16 %1, i16* %lower, align [filtered] + %upper = alloca i16, align [filtered] + store i16 %2, i16* %upper, align [filtered] + store i16 0, i16* %CheckRangeSigned, align [filtered] + %load_value = load i16, i16* %value, align [filtered] + store i16 %load_value, i16* %CheckRangeSigned, align [filtered] + %CheckRangeSigned_ret = load i16, i16* %CheckRangeSigned, align [filtered] ret i16 %CheckRangeSigned_ret } @@ -32,6 +31,6 @@ define void @Main(%Main* %0) { entry: %x = getelementptr inbounds %Main, %Main* %0, i32 0, i32 0 %call = call i16 @CheckRangeSigned(i16 7, i16 0, i16 100) - store i16 %call, i16* %x, align 2 + store i16 %call, i16* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__time_variables_have_nano_seconds_resolution.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__time_variables_have_nano_seconds_resolution.snap index 6a058af9ab5..bf02ec0716f 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__time_variables_have_nano_seconds_resolution.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__time_variables_have_nano_seconds_resolution.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,9 +14,9 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i64 1000000, i64* %y, align 8 - store i64 1000, i64* %y, align 8 - store i64 100, i64* %y, align 8 - store i64 8640000001125000, i64* %y, align 8 + store i64 1000000, i64* %y, align [filtered] + store i64 1000, i64* %y, align [filtered] + store i64 100, i64* %y, align [filtered] + store i64 8640000001125000, i64* %y, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__typed_enums_are_used_properly.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__typed_enums_are_used_properly.snap index 480e6f1d723..042fc95b275 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__typed_enums_are_used_properly.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__typed_enums_are_used_properly.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -26,8 +25,8 @@ entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - store i8 6, i8* %x, align 1 - store i16 16, i16* %y, align 2 - store i32 26, i32* %z, align 4 + store i8 6, i8* %x, align [filtered] + store i16 16, i16* %y, align [filtered] + store i32 26, i32* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__using_const_expression_in_range_type.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__using_const_expression_in_range_type.snap index a83b17e002c..5b651c4328c 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__using_const_expression_in_range_type.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__using_const_expression_in_range_type.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,28 +15,28 @@ target triple = "[filtered]" define i16 @CheckRangeSigned(i16 %0, i16 %1, i16 %2) { entry: - %CheckRangeSigned = alloca i16, align 2 - %value = alloca i16, align 2 - store i16 %0, i16* %value, align 2 - %lower = alloca i16, align 2 - store i16 %1, i16* %lower, align 2 - %upper = alloca i16, align 2 - store i16 %2, i16* %upper, align 2 - store i16 0, i16* %CheckRangeSigned, align 2 - %load_value = load i16, i16* %value, align 2 - store i16 %load_value, i16* %CheckRangeSigned, align 2 - %CheckRangeSigned_ret = load i16, i16* %CheckRangeSigned, align 2 + %CheckRangeSigned = alloca i16, align [filtered] + %value = alloca i16, align [filtered] + store i16 %0, i16* %value, align [filtered] + %lower = alloca i16, align [filtered] + store i16 %1, i16* %lower, align [filtered] + %upper = alloca i16, align [filtered] + store i16 %2, i16* %upper, align [filtered] + store i16 0, i16* %CheckRangeSigned, align [filtered] + %load_value = load i16, i16* %value, align [filtered] + store i16 %load_value, i16* %CheckRangeSigned, align [filtered] + %CheckRangeSigned_ret = load i16, i16* %CheckRangeSigned, align [filtered] ret i16 %CheckRangeSigned_ret } define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - %load_MIN = load i16, i16* @MIN, align 2 + %load_MIN = load i16, i16* @MIN, align [filtered] %1 = sext i16 %load_MIN to i32 %tmpVar = add i32 %1, 1 %2 = trunc i32 %tmpVar to i16 %call = call i16 @CheckRangeSigned(i16 5, i16 0, i16 %2) - store i16 %call, i16* %x, align 2 + store i16 %call, i16* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__using_global_consts_in_expressions.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__using_global_consts_in_expressions.snap index e27b700ecc0..4eda837ad9f 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__using_global_consts_in_expressions.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__using_global_consts_in_expressions.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,6 +17,6 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - store i32 6, i32* %z, align 4 + store i32 6, i32* %z, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__variable_with_same_name_as_data_type.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__variable_with_same_name_as_data_type.snap index ce3be26b632..d0e1188a624 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__variable_with_same_name_as_data_type.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__variable_with_same_name_as_data_type.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,11 +13,11 @@ target triple = "[filtered]" define i64 @func() { entry: - %func = alloca i64, align 8 - %TIME = alloca i64, align 8 - store i64 0, i64* %TIME, align 8 - store i64 0, i64* %func, align 8 - %func_ret = load i64, i64* %func, align 8 + %func = alloca i64, align [filtered] + %TIME = alloca i64, align [filtered] + store i64 0, i64* %TIME, align [filtered] + store i64 0, i64* %func, align [filtered] + %func_ret = load i64, i64* %func, align [filtered] ret i64 %func_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_loop_with_if_exit.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_loop_with_if_exit.snap index b8f56c206f2..fa2f48e5e6a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_loop_with_if_exit.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_loop_with_if_exit.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -21,7 +20,7 @@ condition_check: ; preds = %entry, %continue5 br i1 true, label %while_body, label %continue while_body: ; preds = %condition_check - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %tmpVar = icmp slt i32 %load_x, 20 %1 = zext i1 %tmpVar to i8 %2 = icmp ne i8 %1, 0 @@ -38,10 +37,10 @@ buffer_block: ; No predecessors! br label %continue1 continue1: ; preds = %buffer_block, %while_body - %load_x3 = load i32, i32* %x, align 4 + %load_x3 = load i32, i32* %x, align [filtered] %tmpVar4 = add i32 %load_x3, 1 - store i32 %tmpVar4, i32* %x, align 4 - %load_x6 = load i32, i32* %x, align 4 + store i32 %tmpVar4, i32* %x, align [filtered] + %load_x6 = load i32, i32* %x, align [filtered] %tmpVar7 = icmp sge i32 %load_x6, 10 %3 = zext i1 %tmpVar7 to i8 %4 = icmp ne i8 %3, 0 diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_statement.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_statement.snap index 0022bddeca4..98560565491 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_statement.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_statement.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -21,7 +20,7 @@ condition_check: ; preds = %entry, %continue1 br i1 true, label %while_body, label %continue while_body: ; preds = %condition_check - %load_x = load i8, i8* %x, align 1 + %load_x = load i8, i8* %x, align [filtered] %1 = icmp ne i8 %load_x, 0 %tmpVar = xor i1 %1, true br i1 %tmpVar, label %condition_body, label %continue1 @@ -36,6 +35,6 @@ buffer_block: ; No predecessors! br label %continue1 continue1: ; preds = %buffer_block, %while_body - %load_x2 = load i8, i8* %x, align 1 + %load_x2 = load i8, i8* %x, align [filtered] br label %condition_check } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_with_expression_statement.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_with_expression_statement.snap index 603410b9b0f..c625f00aef9 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_with_expression_statement.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__code_gen_tests__while_with_expression_statement.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/code_gen_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -21,7 +20,7 @@ condition_check: ; preds = %entry, %continue1 br i1 true, label %while_body, label %continue while_body: ; preds = %condition_check - %load_x = load i8, i8* %x, align 1 + %load_x = load i8, i8* %x, align [filtered] %1 = zext i8 %load_x to i32 %tmpVar = icmp eq i32 %1, 0 %2 = zext i1 %tmpVar to i8 @@ -39,6 +38,6 @@ buffer_block: ; No predecessors! br label %continue1 continue1: ; preds = %buffer_block, %while_body - %load_x3 = load i8, i8* %x, align 1 + %load_x3 = load i8, i8* %x, align [filtered] br label %condition_check } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__aliased_number_type_comparing_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__aliased_number_type_comparing_test.snap index ebead1266b3..8588b802051 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__aliased_number_type_comparing_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__aliased_number_type_comparing_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,23 +9,23 @@ target triple = "[filtered]" define i16 @baz() { entry: - %baz = alloca i16, align 2 - %x = alloca i16, align 2 - %y = alloca i16, align 2 - store i16 0, i16* %x, align 2 - store i16 0, i16* %y, align 2 - store i16 0, i16* %baz, align 2 - %load_x = load i16, i16* %x, align 2 + %baz = alloca i16, align [filtered] + %x = alloca i16, align [filtered] + %y = alloca i16, align [filtered] + store i16 0, i16* %x, align [filtered] + store i16 0, i16* %y, align [filtered] + store i16 0, i16* %baz, align [filtered] + %load_x = load i16, i16* %x, align [filtered] %0 = sext i16 %load_x to i32 %tmpVar = icmp eq i32 %0, 3 - %load_x1 = load i16, i16* %x, align 2 + %load_x1 = load i16, i16* %x, align [filtered] %1 = sext i16 %load_x1 to i32 - %load_y = load i16, i16* %y, align 2 + %load_y = load i16, i16* %y, align [filtered] %2 = sext i16 %load_y to i32 %tmpVar2 = icmp slt i32 %1, %2 - %load_y3 = load i16, i16* %y, align 2 + %load_y3 = load i16, i16* %y, align [filtered] %3 = sext i16 %load_y3 to i32 %tmpVar4 = icmp sle i32 %3, 0 - %baz_ret = load i16, i16* %baz, align 2 + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__aliased_ranged_number_type_comparing_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__aliased_ranged_number_type_comparing_test.snap index ebead1266b3..8588b802051 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__aliased_ranged_number_type_comparing_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__aliased_ranged_number_type_comparing_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,23 +9,23 @@ target triple = "[filtered]" define i16 @baz() { entry: - %baz = alloca i16, align 2 - %x = alloca i16, align 2 - %y = alloca i16, align 2 - store i16 0, i16* %x, align 2 - store i16 0, i16* %y, align 2 - store i16 0, i16* %baz, align 2 - %load_x = load i16, i16* %x, align 2 + %baz = alloca i16, align [filtered] + %x = alloca i16, align [filtered] + %y = alloca i16, align [filtered] + store i16 0, i16* %x, align [filtered] + store i16 0, i16* %y, align [filtered] + store i16 0, i16* %baz, align [filtered] + %load_x = load i16, i16* %x, align [filtered] %0 = sext i16 %load_x to i32 %tmpVar = icmp eq i32 %0, 3 - %load_x1 = load i16, i16* %x, align 2 + %load_x1 = load i16, i16* %x, align [filtered] %1 = sext i16 %load_x1 to i32 - %load_y = load i16, i16* %y, align 2 + %load_y = load i16, i16* %y, align [filtered] %2 = sext i16 %load_y to i32 %tmpVar2 = icmp slt i32 %1, %2 - %load_y3 = load i16, i16* %y, align 2 + %load_y3 = load i16, i16* %y, align [filtered] %3 = sext i16 %load_y3 to i32 %tmpVar4 = icmp sle i32 %3, 0 - %baz_ret = load i16, i16* %baz, align 2 + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_datetime_types.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_datetime_types.snap index 975f1335adb..cf261162f05 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_datetime_types.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_datetime_types.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,14 +17,14 @@ entry: %var_time_of_day = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var_date = getelementptr inbounds %main, %main* %0, i32 0, i32 2 %var_date_and_time = getelementptr inbounds %main, %main* %0, i32 0, i32 3 - %load_var_time = load i64, i64* %var_time, align 8 - %load_var_time_of_day = load i64, i64* %var_time_of_day, align 8 + %load_var_time = load i64, i64* %var_time, align [filtered] + %load_var_time_of_day = load i64, i64* %var_time_of_day, align [filtered] %tmpVar = icmp sgt i64 %load_var_time, %load_var_time_of_day br i1 %tmpVar, label %1, label %2 1: ; preds = %entry - %load_var_time_of_day1 = load i64, i64* %var_time_of_day, align 8 - %load_var_date = load i64, i64* %var_date, align 8 + %load_var_time_of_day1 = load i64, i64* %var_time_of_day, align [filtered] + %load_var_date = load i64, i64* %var_date, align [filtered] %tmpVar2 = icmp sgt i64 %load_var_time_of_day1, %load_var_date br label %2 @@ -34,8 +33,8 @@ entry: br i1 %3, label %4, label %5 4: ; preds = %2 - %load_var_date3 = load i64, i64* %var_date, align 8 - %load_var_date_and_time = load i64, i64* %var_date_and_time, align 8 + %load_var_date3 = load i64, i64* %var_date, align [filtered] + %load_var_date_and_time = load i64, i64* %var_date_and_time, align [filtered] %tmpVar4 = icmp sgt i64 %load_var_date3, %load_var_date_and_time br label %5 diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_instruction_functions_with_different_types.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_instruction_functions_with_different_types.snap index 98e6587af7e..090113acac5 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_instruction_functions_with_different_types.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_instruction_functions_with_different_types.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,9 +13,9 @@ target triple = "[filtered]" define float @foo() { entry: - %foo = alloca float, align 4 - store float 0.000000e+00, float* %foo, align 4 - %foo_ret = load float, float* %foo, align 4 + %foo = alloca float, align [filtered] + store float 0.000000e+00, float* %foo, align [filtered] + %foo_ret = load float, float* %foo, align [filtered] ret float %foo_ret } @@ -35,94 +34,94 @@ entry: %var_uint = getelementptr inbounds %main, %main* %0, i32 0, i32 10 %var_udint = getelementptr inbounds %main, %main* %0, i32 0, i32 11 %var_ulint = getelementptr inbounds %main, %main* %0, i32 0, i32 12 - store float* %var_real, float** %ptr_float, align 8 - %load_var_sint = load i8, i8* %var_sint, align 1 + store float* %var_real, float** %ptr_float, align [filtered] + %load_var_sint = load i8, i8* %var_sint, align [filtered] %1 = sext i8 %load_var_sint to i32 - %load_var_dint = load i32, i32* %var_dint, align 4 + %load_var_dint = load i32, i32* %var_dint, align [filtered] %tmpVar = icmp eq i32 %1, %load_var_dint %2 = zext i1 %tmpVar to i8 - %load_var_lreal = load double, double* %var_lreal, align 8 + %load_var_lreal = load double, double* %var_lreal, align [filtered] %tmpVar1 = fcmp ogt double 1.050000e+01, %load_var_lreal %3 = zext i1 %tmpVar1 to i8 - %load_var_usint = load i8, i8* %var_usint, align 1 + %load_var_usint = load i8, i8* %var_usint, align [filtered] %4 = zext i8 %load_var_usint to i32 - %load_var_udint = load i32, i32* %var_udint, align 4 + %load_var_udint = load i32, i32* %var_udint, align [filtered] %tmpVar2 = icmp ne i32 %4, %load_var_udint %5 = zext i1 %tmpVar2 to i8 - %load_var_uint = load i16, i16* %var_uint, align 2 + %load_var_uint = load i16, i16* %var_uint, align [filtered] %6 = zext i16 %load_var_uint to i32 %tmpVar3 = icmp sle i32 %6, 40 %7 = zext i1 %tmpVar3 to i8 - %load_var_ulint = load i64, i64* %var_ulint, align 8 + %load_var_ulint = load i64, i64* %var_ulint, align [filtered] %tmpVar4 = icmp sge i64 10, %load_var_ulint %8 = zext i1 %tmpVar4 to i8 - %load_var_sint5 = load i8, i8* %var_sint, align 1 + %load_var_sint5 = load i8, i8* %var_sint, align [filtered] %9 = sext i8 %load_var_sint5 to i32 - %load_var_usint6 = load i8, i8* %var_usint, align 1 + %load_var_usint6 = load i8, i8* %var_usint, align [filtered] %10 = zext i8 %load_var_usint6 to i32 %tmpVar7 = icmp eq i32 %9, %10 %11 = zext i1 %tmpVar7 to i8 - %load_var_uint8 = load i16, i16* %var_uint, align 2 + %load_var_uint8 = load i16, i16* %var_uint, align [filtered] %12 = zext i16 %load_var_uint8 to i64 - %load_var_lint = load i64, i64* %var_lint, align 8 + %load_var_lint = load i64, i64* %var_lint, align [filtered] %tmpVar9 = icmp sle i64 %12, %load_var_lint %13 = zext i1 %tmpVar9 to i8 - %load_var_dint10 = load i32, i32* %var_dint, align 4 + %load_var_dint10 = load i32, i32* %var_dint, align [filtered] %14 = sext i32 %load_var_dint10 to i64 - %load_var_ulint11 = load i64, i64* %var_ulint, align 8 + %load_var_ulint11 = load i64, i64* %var_ulint, align [filtered] %tmpVar12 = icmp sge i64 %14, %load_var_ulint11 %15 = zext i1 %tmpVar12 to i8 - %load_var_lint13 = load i64, i64* %var_lint, align 8 - %load_a = load i16, i16* %a, align 2 + %load_var_lint13 = load i64, i64* %var_lint, align [filtered] + %load_a = load i16, i16* %a, align [filtered] %16 = sext i16 %load_a to i64 %tmpVar14 = icmp slt i64 %load_var_lint13, %16 %17 = zext i1 %tmpVar14 to i8 - %load_a15 = load i16, i16* %a, align 2 + %load_a15 = load i16, i16* %a, align [filtered] %18 = sext i16 %load_a15 to i32 - %load_var_sint16 = load i8, i8* %var_sint, align 1 + %load_var_sint16 = load i8, i8* %var_sint, align [filtered] %19 = sext i8 %load_var_sint16 to i32 %tmpVar17 = icmp sgt i32 %18, %19 %20 = zext i1 %tmpVar17 to i8 - %load_b = load i32, i32* %b, align 4 + %load_b = load i32, i32* %b, align [filtered] %21 = sext i32 %load_b to i64 - %load_var_lint18 = load i64, i64* %var_lint, align 8 + %load_var_lint18 = load i64, i64* %var_lint, align [filtered] %tmpVar19 = icmp slt i64 %21, %load_var_lint18 %22 = zext i1 %tmpVar19 to i8 - %load_b20 = load i32, i32* %b, align 4 + %load_b20 = load i32, i32* %b, align [filtered] %tmpVar21 = icmp ne i32 5, %load_b20 br i1 %tmpVar21, label %23, label %24 23: ; preds = %entry - %load_b22 = load i32, i32* %b, align 4 + %load_b22 = load i32, i32* %b, align [filtered] %tmpVar23 = icmp ne i32 %load_b22, 17 br label %24 24: ; preds = %23, %entry %25 = phi i1 [ %tmpVar21, %entry ], [ %tmpVar23, %23 ] %26 = zext i1 %25 to i8 - %load_ptr_float = load float*, float** %ptr_float, align 8 - %load_var_usint24 = load i8, i8* %var_usint, align 1 + %load_ptr_float = load float*, float** %ptr_float, align [filtered] + %load_var_usint24 = load i8, i8* %var_usint, align [filtered] %27 = zext i8 %load_var_usint24 to i64 %28 = ptrtoint float* %load_ptr_float to i64 %tmpVar25 = icmp sle i64 %28, %27 %29 = zext i1 %tmpVar25 to i8 - %load_a26 = load i16, i16* %a, align 2 + %load_a26 = load i16, i16* %a, align [filtered] %30 = sext i16 %load_a26 to i64 - %load_ptr_float27 = load float*, float** %ptr_float, align 8 + %load_ptr_float27 = load float*, float** %ptr_float, align [filtered] %31 = ptrtoint float* %load_ptr_float27 to i64 %tmpVar28 = icmp eq i64 %30, %31 %32 = zext i1 %tmpVar28 to i8 %call = call float @foo() %tmpVar29 = fcmp one float %call, 4.050000e+01 %33 = zext i1 %tmpVar29 to i8 - %load_var_udint30 = load i32, i32* %var_udint, align 4 + %load_var_udint30 = load i32, i32* %var_udint, align [filtered] %34 = uitofp i32 %load_var_udint30 to float %call31 = call float @foo() %tmpVar32 = fcmp ole float %34, %call31 %35 = zext i1 %tmpVar32 to i8 %call33 = call float @foo() %36 = fpext float %call33 to double - %load_var_lint34 = load i64, i64* %var_lint, align 8 + %load_var_lint34 = load i64, i64* %var_lint, align [filtered] %37 = sitofp i64 %load_var_lint34 to double %tmpVar35 = fcmp oeq double %36, %37 %38 = zext i1 %tmpVar35 to i8 diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_instructions_with_different_types.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_instructions_with_different_types.snap index 84315f7b567..8a26c3ea96e 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_instructions_with_different_types.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__compare_instructions_with_different_types.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,9 +13,9 @@ target triple = "[filtered]" define i64 @foo() { entry: - %foo = alloca i64, align 8 - store i64 0, i64* %foo, align 8 - %foo_ret = load i64, i64* %foo, align 8 + %foo = alloca i64, align [filtered] + store i64 0, i64* %foo, align [filtered] + %foo_ret = load i64, i64* %foo, align [filtered] ret i64 %foo_ret } @@ -33,71 +32,71 @@ entry: %var_uint = getelementptr inbounds %main, %main* %0, i32 0, i32 8 %var_udint = getelementptr inbounds %main, %main* %0, i32 0, i32 9 %var_ulint = getelementptr inbounds %main, %main* %0, i32 0, i32 10 - store i16* %var_int, i16** %ptr_int, align 8 - %load_var_sint = load i8, i8* %var_sint, align 1 + store i16* %var_int, i16** %ptr_int, align [filtered] + %load_var_sint = load i8, i8* %var_sint, align [filtered] %1 = sext i8 %load_var_sint to i32 - %load_var_dint = load i32, i32* %var_dint, align 4 + %load_var_dint = load i32, i32* %var_dint, align [filtered] %tmpVar = icmp eq i32 %1, %load_var_dint - %load_var_int = load i16, i16* %var_int, align 2 + %load_var_int = load i16, i16* %var_int, align [filtered] %2 = sext i16 %load_var_int to i32 %tmpVar1 = icmp slt i32 %2, 30 - %load_var_lint = load i64, i64* %var_lint, align 8 + %load_var_lint = load i64, i64* %var_lint, align [filtered] %tmpVar2 = icmp sgt i64 10, %load_var_lint - %load_var_usint = load i8, i8* %var_usint, align 1 + %load_var_usint = load i8, i8* %var_usint, align [filtered] %3 = zext i8 %load_var_usint to i32 - %load_var_udint = load i32, i32* %var_udint, align 4 + %load_var_udint = load i32, i32* %var_udint, align [filtered] %tmpVar3 = icmp ne i32 %3, %load_var_udint - %load_var_uint = load i16, i16* %var_uint, align 2 + %load_var_uint = load i16, i16* %var_uint, align [filtered] %4 = zext i16 %load_var_uint to i32 %tmpVar4 = icmp sle i32 %4, 40 - %load_var_ulint = load i64, i64* %var_ulint, align 8 + %load_var_ulint = load i64, i64* %var_ulint, align [filtered] %tmpVar5 = icmp sge i64 10, %load_var_ulint - %load_var_sint6 = load i8, i8* %var_sint, align 1 + %load_var_sint6 = load i8, i8* %var_sint, align [filtered] %5 = sext i8 %load_var_sint6 to i32 - %load_var_usint7 = load i8, i8* %var_usint, align 1 + %load_var_usint7 = load i8, i8* %var_usint, align [filtered] %6 = zext i8 %load_var_usint7 to i32 %tmpVar8 = icmp eq i32 %5, %6 - %load_var_uint9 = load i16, i16* %var_uint, align 2 + %load_var_uint9 = load i16, i16* %var_uint, align [filtered] %7 = zext i16 %load_var_uint9 to i64 - %load_var_lint10 = load i64, i64* %var_lint, align 8 + %load_var_lint10 = load i64, i64* %var_lint, align [filtered] %tmpVar11 = icmp sle i64 %7, %load_var_lint10 - %load_var_dint12 = load i32, i32* %var_dint, align 4 + %load_var_dint12 = load i32, i32* %var_dint, align [filtered] %8 = sext i32 %load_var_dint12 to i64 - %load_var_ulint13 = load i64, i64* %var_ulint, align 8 + %load_var_ulint13 = load i64, i64* %var_ulint, align [filtered] %tmpVar14 = icmp sge i64 %8, %load_var_ulint13 - %load_var_lint15 = load i64, i64* %var_lint, align 8 - %load_a = load i16, i16* %a, align 2 + %load_var_lint15 = load i64, i64* %var_lint, align [filtered] + %load_a = load i16, i16* %a, align [filtered] %9 = sext i16 %load_a to i64 %tmpVar16 = icmp slt i64 %load_var_lint15, %9 - %load_a17 = load i16, i16* %a, align 2 + %load_a17 = load i16, i16* %a, align [filtered] %10 = sext i16 %load_a17 to i32 - %load_var_sint18 = load i8, i8* %var_sint, align 1 + %load_var_sint18 = load i8, i8* %var_sint, align [filtered] %11 = sext i8 %load_var_sint18 to i32 %tmpVar19 = icmp sgt i32 %10, %11 - %load_b = load i32, i32* %b, align 4 + %load_b = load i32, i32* %b, align [filtered] %12 = sext i32 %load_b to i64 - %load_var_lint20 = load i64, i64* %var_lint, align 8 + %load_var_lint20 = load i64, i64* %var_lint, align [filtered] %tmpVar21 = icmp slt i64 %12, %load_var_lint20 - %load_b22 = load i32, i32* %b, align 4 + %load_b22 = load i32, i32* %b, align [filtered] %tmpVar23 = icmp ne i32 5, %load_b22 - %load_ptr_int = load i16*, i16** %ptr_int, align 8 - %load_var_usint24 = load i8, i8* %var_usint, align 1 + %load_ptr_int = load i16*, i16** %ptr_int, align [filtered] + %load_var_usint24 = load i8, i8* %var_usint, align [filtered] %13 = zext i8 %load_var_usint24 to i64 %14 = ptrtoint i16* %load_ptr_int to i64 %tmpVar25 = icmp sle i64 %14, %13 - %load_a26 = load i16, i16* %a, align 2 + %load_a26 = load i16, i16* %a, align [filtered] %15 = sext i16 %load_a26 to i64 - %load_ptr_int27 = load i16*, i16** %ptr_int, align 8 + %load_ptr_int27 = load i16*, i16** %ptr_int, align [filtered] %16 = ptrtoint i16* %load_ptr_int27 to i64 %tmpVar28 = icmp eq i64 %15, %16 %call = call i64 @foo() %tmpVar29 = icmp ne i64 %call, 40 - %load_var_udint30 = load i32, i32* %var_udint, align 4 + %load_var_udint30 = load i32, i32* %var_udint, align [filtered] %17 = zext i32 %load_var_udint30 to i64 %call31 = call i64 @foo() %tmpVar32 = icmp sle i64 %17, %call31 %call33 = call i64 @foo() - %load_var_lint34 = load i64, i64* %var_lint, align 8 + %load_var_lint34 = load i64, i64* %var_lint, align [filtered] %tmpVar35 = icmp eq i64 %call33, %load_var_lint34 ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__pointer_compare_instructions.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__pointer_compare_instructions.snap index 2bb84baada0..e9133662325 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__pointer_compare_instructions.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__pointer_compare_instructions.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,48 +17,48 @@ entry: %y = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %pt = getelementptr inbounds %main, %main* %0, i32 0, i32 2 %comp = getelementptr inbounds %main, %main* %0, i32 0, i32 3 - store i16* %x, i16** %pt, align 8 - %load_pt = load i16*, i16** %pt, align 8 - %load_pt1 = load i16*, i16** %pt, align 8 + store i16* %x, i16** %pt, align [filtered] + %load_pt = load i16*, i16** %pt, align [filtered] + %load_pt1 = load i16*, i16** %pt, align [filtered] %1 = ptrtoint i16* %load_pt to i64 %2 = ptrtoint i16* %load_pt1 to i64 %tmpVar = icmp eq i64 %1, %2 %3 = zext i1 %tmpVar to i8 - store i8 %3, i8* %comp, align 1 - %load_pt2 = load i16*, i16** %pt, align 8 - %load_y = load i16, i16* %y, align 2 + store i8 %3, i8* %comp, align [filtered] + %load_pt2 = load i16*, i16** %pt, align [filtered] + %load_y = load i16, i16* %y, align [filtered] %4 = sext i16 %load_y to i64 %5 = ptrtoint i16* %load_pt2 to i64 %tmpVar3 = icmp ne i64 %5, %4 %6 = zext i1 %tmpVar3 to i8 - store i8 %6, i8* %comp, align 1 - %load_pt4 = load i16*, i16** %pt, align 8 - %load_pt5 = load i16*, i16** %pt, align 8 + store i8 %6, i8* %comp, align [filtered] + %load_pt4 = load i16*, i16** %pt, align [filtered] + %load_pt5 = load i16*, i16** %pt, align [filtered] %7 = ptrtoint i16* %load_pt4 to i64 %8 = ptrtoint i16* %load_pt5 to i64 %tmpVar6 = icmp slt i64 %7, %8 %9 = zext i1 %tmpVar6 to i8 - store i8 %9, i8* %comp, align 1 - %load_pt7 = load i16*, i16** %pt, align 8 - %load_y8 = load i16, i16* %y, align 2 + store i8 %9, i8* %comp, align [filtered] + %load_pt7 = load i16*, i16** %pt, align [filtered] + %load_y8 = load i16, i16* %y, align [filtered] %10 = sext i16 %load_y8 to i64 %11 = ptrtoint i16* %load_pt7 to i64 %tmpVar9 = icmp sgt i64 %11, %10 %12 = zext i1 %tmpVar9 to i8 - store i8 %12, i8* %comp, align 1 - %load_pt10 = load i16*, i16** %pt, align 8 - %load_pt11 = load i16*, i16** %pt, align 8 + store i8 %12, i8* %comp, align [filtered] + %load_pt10 = load i16*, i16** %pt, align [filtered] + %load_pt11 = load i16*, i16** %pt, align [filtered] %13 = ptrtoint i16* %load_pt10 to i64 %14 = ptrtoint i16* %load_pt11 to i64 %tmpVar12 = icmp sle i64 %13, %14 %15 = zext i1 %tmpVar12 to i8 - store i8 %15, i8* %comp, align 1 - %load_y13 = load i16, i16* %y, align 2 + store i8 %15, i8* %comp, align [filtered] + %load_y13 = load i16, i16* %y, align [filtered] %16 = sext i16 %load_y13 to i64 - %load_pt14 = load i16*, i16** %pt, align 8 + %load_pt14 = load i16*, i16** %pt, align [filtered] %17 = ptrtoint i16* %load_pt14 to i64 %tmpVar15 = icmp sge i64 %16, %17 %18 = zext i1 %tmpVar15 to i8 - store i8 %18, i8* %comp, align 1 + store i8 %18, i8* %comp, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__pointer_function_call_compare_instructions.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__pointer_function_call_compare_instructions.snap index 22e8294bc2f..d74d5ae02ed 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__pointer_function_call_compare_instructions.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__pointer_function_call_compare_instructions.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,9 +13,9 @@ target triple = "[filtered]" define i64 @foo() { entry: - %foo = alloca i64, align 8 - store i64 0, i64* %foo, align 8 - %foo_ret = load i64, i64* %foo, align 8 + %foo = alloca i64, align [filtered] + store i64 0, i64* %foo, align [filtered] + %foo_ret = load i64, i64* %foo, align [filtered] ret i64 %foo_ret } @@ -25,42 +24,42 @@ entry: %pt = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %x = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %comp = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - store i16* %x, i16** %pt, align 8 - %load_pt = load i16*, i16** %pt, align 8 + store i16* %x, i16** %pt, align [filtered] + %load_pt = load i16*, i16** %pt, align [filtered] %call = call i64 @foo() %1 = ptrtoint i16* %load_pt to i64 %tmpVar = icmp eq i64 %1, %call %2 = zext i1 %tmpVar to i8 - store i8 %2, i8* %comp, align 1 - %load_pt1 = load i16*, i16** %pt, align 8 + store i8 %2, i8* %comp, align [filtered] + %load_pt1 = load i16*, i16** %pt, align [filtered] %call2 = call i64 @foo() %3 = ptrtoint i16* %load_pt1 to i64 %tmpVar3 = icmp ne i64 %3, %call2 %4 = zext i1 %tmpVar3 to i8 - store i8 %4, i8* %comp, align 1 - %load_pt4 = load i16*, i16** %pt, align 8 + store i8 %4, i8* %comp, align [filtered] + %load_pt4 = load i16*, i16** %pt, align [filtered] %call5 = call i64 @foo() %5 = ptrtoint i16* %load_pt4 to i64 %tmpVar6 = icmp slt i64 %5, %call5 %6 = zext i1 %tmpVar6 to i8 - store i8 %6, i8* %comp, align 1 - %load_pt7 = load i16*, i16** %pt, align 8 + store i8 %6, i8* %comp, align [filtered] + %load_pt7 = load i16*, i16** %pt, align [filtered] %call8 = call i64 @foo() %7 = ptrtoint i16* %load_pt7 to i64 %tmpVar9 = icmp sgt i64 %7, %call8 %8 = zext i1 %tmpVar9 to i8 - store i8 %8, i8* %comp, align 1 - %load_pt10 = load i16*, i16** %pt, align 8 + store i8 %8, i8* %comp, align [filtered] + %load_pt10 = load i16*, i16** %pt, align [filtered] %call11 = call i64 @foo() %9 = ptrtoint i16* %load_pt10 to i64 %tmpVar12 = icmp sle i64 %9, %call11 %10 = zext i1 %tmpVar12 to i8 - store i8 %10, i8* %comp, align 1 - %load_pt13 = load i16*, i16** %pt, align 8 + store i8 %10, i8* %comp, align [filtered] + %load_pt13 = load i16*, i16** %pt, align [filtered] %call14 = call i64 @foo() %11 = ptrtoint i16* %load_pt13 to i64 %tmpVar15 = icmp sge i64 %11, %call14 %12 = zext i1 %tmpVar15 to i8 - store i8 %12, i8* %comp, align 1 + store i8 %12, i8* %comp, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__ranged_number_type_comparing_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__ranged_number_type_comparing_test.snap index ebead1266b3..8588b802051 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__ranged_number_type_comparing_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__ranged_number_type_comparing_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,23 +9,23 @@ target triple = "[filtered]" define i16 @baz() { entry: - %baz = alloca i16, align 2 - %x = alloca i16, align 2 - %y = alloca i16, align 2 - store i16 0, i16* %x, align 2 - store i16 0, i16* %y, align 2 - store i16 0, i16* %baz, align 2 - %load_x = load i16, i16* %x, align 2 + %baz = alloca i16, align [filtered] + %x = alloca i16, align [filtered] + %y = alloca i16, align [filtered] + store i16 0, i16* %x, align [filtered] + store i16 0, i16* %y, align [filtered] + store i16 0, i16* %baz, align [filtered] + %load_x = load i16, i16* %x, align [filtered] %0 = sext i16 %load_x to i32 %tmpVar = icmp eq i32 %0, 3 - %load_x1 = load i16, i16* %x, align 2 + %load_x1 = load i16, i16* %x, align [filtered] %1 = sext i16 %load_x1 to i32 - %load_y = load i16, i16* %y, align 2 + %load_y = load i16, i16* %y, align [filtered] %2 = sext i16 %load_y to i32 %tmpVar2 = icmp slt i32 %1, %2 - %load_y3 = load i16, i16* %y, align 2 + %load_y3 = load i16, i16* %y, align [filtered] %3 = sext i16 %load_y3 to i32 %tmpVar4 = icmp sle i32 %3, 0 - %baz_ret = load i16, i16* %baz, align 2 + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_comparison_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_comparison_test.snap index a78c1bb52e8..0f7ff8c266a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_comparison_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_comparison_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -13,39 +12,39 @@ target triple = "[filtered]" define i8 @STRING_EQUAL(i8* %0, i8* %1) { entry: - %STRING_EQUAL = alloca i8, align 1 - %op1 = alloca [1025 x i8], align 1 + %STRING_EQUAL = alloca i8, align [filtered] + %op1 = alloca [1025 x i8], align [filtered] %bitcast = bitcast [1025 x i8]* %op1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1024, i1 false) - %op2 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1024, i1 false) + %op2 = alloca [1025 x i8], align [filtered] %bitcast1 = bitcast [1025 x i8]* %op2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1024, i1 false) - store i8 0, i8* %STRING_EQUAL, align 1 - %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1024, i1 false) + store i8 0, i8* %STRING_EQUAL, align [filtered] + %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align [filtered] ret i8 %STRING_EQUAL_ret } define i16 @baz() { entry: - %baz = alloca i16, align 2 - %a = alloca [81 x i8], align 1 - %b = alloca [81 x i8], align 1 - %result = alloca i8, align 1 + %baz = alloca i16, align [filtered] + %a = alloca [81 x i8], align [filtered] + %b = alloca [81 x i8], align [filtered] + %result = alloca i8, align [filtered] %0 = bitcast [81 x i8]* %a to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %1 = bitcast [81 x i8]* %b to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - store i8 0, i8* %result, align 1 - store i16 0, i16* %baz, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + store i8 0, i8* %result, align [filtered] + store i16 0, i16* %baz, align [filtered] %call = call i8 @STRING_EQUAL(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_0, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_1, i32 0, i32 0)) - store i8 %call, i8* %result, align 1 + store i8 %call, i8* %result, align [filtered] %2 = bitcast [81 x i8]* %a to i8* %3 = bitcast [81 x i8]* %b to i8* %call1 = call i8 @STRING_EQUAL(i8* %2, i8* %3) - store i8 %call1, i8* %result, align 1 - %baz_ret = load i16, i16* %baz, align 2 + store i8 %call1, i8* %result, align [filtered] + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_equal_with_constant_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_equal_with_constant_test.snap index e5b92798c0c..c2d7a9e3c0e 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_equal_with_constant_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_equal_with_constant_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -13,39 +12,39 @@ target triple = "[filtered]" define i8 @STRING_EQUAL(i8* %0, i8* %1) { entry: - %STRING_EQUAL = alloca i8, align 1 - %op1 = alloca [1025 x i8], align 1 + %STRING_EQUAL = alloca i8, align [filtered] + %op1 = alloca [1025 x i8], align [filtered] %bitcast = bitcast [1025 x i8]* %op1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1024, i1 false) - %op2 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1024, i1 false) + %op2 = alloca [1025 x i8], align [filtered] %bitcast1 = bitcast [1025 x i8]* %op2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1024, i1 false) - store i8 0, i8* %STRING_EQUAL, align 1 - %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1024, i1 false) + store i8 0, i8* %STRING_EQUAL, align [filtered] + %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align [filtered] ret i8 %STRING_EQUAL_ret } define i16 @baz() { entry: - %baz = alloca i16, align 2 - %a = alloca [81 x i8], align 1 - %b = alloca [81 x i8], align 1 - %result = alloca i8, align 1 + %baz = alloca i16, align [filtered] + %a = alloca [81 x i8], align [filtered] + %b = alloca [81 x i8], align [filtered] + %result = alloca i8, align [filtered] %0 = bitcast [81 x i8]* %a to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %1 = bitcast [81 x i8]* %b to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - store i8 0, i8* %result, align 1 - store i16 0, i16* %baz, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + store i8 0, i8* %result, align [filtered] + store i16 0, i16* %baz, align [filtered] %2 = bitcast [81 x i8]* %a to i8* %call = call i8 @STRING_EQUAL(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_1, i32 0, i32 0)) - store i8 %call, i8* %result, align 1 + store i8 %call, i8* %result, align [filtered] %3 = bitcast [81 x i8]* %b to i8* %call1 = call i8 @STRING_EQUAL(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_0, i32 0, i32 0), i8* %3) - store i8 %call1, i8* %result, align 1 - %baz_ret = load i16, i16* %baz, align 2 + store i8 %call1, i8* %result, align [filtered] + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_greater_or_equal_with_constant_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_greater_or_equal_with_constant_test.snap index 5d66343c854..25a72e70a6f 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_greater_or_equal_with_constant_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_greater_or_equal_with_constant_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -12,48 +11,48 @@ target triple = "[filtered]" define i8 @STRING_GREATER(i8* %0, i8* %1) { entry: - %STRING_GREATER = alloca i8, align 1 - %op1 = alloca [1025 x i8], align 1 + %STRING_GREATER = alloca i8, align [filtered] + %op1 = alloca [1025 x i8], align [filtered] %bitcast = bitcast [1025 x i8]* %op1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1024, i1 false) - %op2 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1024, i1 false) + %op2 = alloca [1025 x i8], align [filtered] %bitcast1 = bitcast [1025 x i8]* %op2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1024, i1 false) - store i8 0, i8* %STRING_GREATER, align 1 - %STRING_GREATER_ret = load i8, i8* %STRING_GREATER, align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1024, i1 false) + store i8 0, i8* %STRING_GREATER, align [filtered] + %STRING_GREATER_ret = load i8, i8* %STRING_GREATER, align [filtered] ret i8 %STRING_GREATER_ret } define i8 @STRING_EQUAL(i8* %0, i8* %1) { entry: - %STRING_EQUAL = alloca i8, align 1 - %op1 = alloca [1025 x i8], align 1 + %STRING_EQUAL = alloca i8, align [filtered] + %op1 = alloca [1025 x i8], align [filtered] %bitcast = bitcast [1025 x i8]* %op1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1024, i1 false) - %op2 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1024, i1 false) + %op2 = alloca [1025 x i8], align [filtered] %bitcast1 = bitcast [1025 x i8]* %op2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1024, i1 false) - store i8 0, i8* %STRING_EQUAL, align 1 - %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1024, i1 false) + store i8 0, i8* %STRING_EQUAL, align [filtered] + %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align [filtered] ret i8 %STRING_EQUAL_ret } define i16 @baz() { entry: - %baz = alloca i16, align 2 - %a = alloca [81 x i8], align 1 - %b = alloca [81 x i8], align 1 - %result = alloca i8, align 1 + %baz = alloca i16, align [filtered] + %a = alloca [81 x i8], align [filtered] + %b = alloca [81 x i8], align [filtered] + %result = alloca i8, align [filtered] %0 = bitcast [81 x i8]* %a to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %1 = bitcast [81 x i8]* %b to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - store i8 0, i8* %result, align 1 - store i16 0, i16* %baz, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + store i8 0, i8* %result, align [filtered] + store i16 0, i16* %baz, align [filtered] %2 = bitcast [81 x i8]* %a to i8* %call = call i8 @STRING_EQUAL(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_0, i32 0, i32 0)) %3 = icmp ne i8 %call, 0 @@ -68,8 +67,8 @@ entry: 7: ; preds = %4, %entry %8 = phi i1 [ %3, %entry ], [ %6, %4 ] %9 = zext i1 %8 to i8 - store i8 %9, i8* %result, align 1 - %baz_ret = load i16, i16* %baz, align 2 + store i8 %9, i8* %result, align [filtered] + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_greater_with_constant_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_greater_with_constant_test.snap index 5e8888cf23a..42385dcf86c 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_greater_with_constant_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_greater_with_constant_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -12,33 +11,33 @@ target triple = "[filtered]" define i8 @STRING_GREATER(i8* %0, i8* %1) { entry: - %STRING_GREATER = alloca i8, align 1 - %op1 = alloca [1025 x i8], align 1 + %STRING_GREATER = alloca i8, align [filtered] + %op1 = alloca [1025 x i8], align [filtered] %bitcast = bitcast [1025 x i8]* %op1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1024, i1 false) - %op2 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1024, i1 false) + %op2 = alloca [1025 x i8], align [filtered] %bitcast1 = bitcast [1025 x i8]* %op2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1024, i1 false) - store i8 0, i8* %STRING_GREATER, align 1 - %STRING_GREATER_ret = load i8, i8* %STRING_GREATER, align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1024, i1 false) + store i8 0, i8* %STRING_GREATER, align [filtered] + %STRING_GREATER_ret = load i8, i8* %STRING_GREATER, align [filtered] ret i8 %STRING_GREATER_ret } define i16 @baz() { entry: - %baz = alloca i16, align 2 - %a = alloca [81 x i8], align 1 - %result = alloca i8, align 1 + %baz = alloca i16, align [filtered] + %a = alloca [81 x i8], align [filtered] + %result = alloca i8, align [filtered] %0 = bitcast [81 x i8]* %a to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - store i8 0, i8* %result, align 1 - store i16 0, i16* %baz, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + store i8 0, i8* %result, align [filtered] + store i16 0, i16* %baz, align [filtered] %1 = bitcast [81 x i8]* %a to i8* %call = call i8 @STRING_GREATER(i8* %1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_0, i32 0, i32 0)) - store i8 %call, i8* %result, align 1 - %baz_ret = load i16, i16* %baz, align 2 + store i8 %call, i8* %result, align [filtered] + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_less_with_constant_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_less_with_constant_test.snap index d99024bc6f0..30efdf242f6 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_less_with_constant_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_less_with_constant_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -12,33 +11,33 @@ target triple = "[filtered]" define i8 @STRING_LESS(i8* %0, i8* %1) { entry: - %STRING_LESS = alloca i8, align 1 - %op1 = alloca [1025 x i8], align 1 + %STRING_LESS = alloca i8, align [filtered] + %op1 = alloca [1025 x i8], align [filtered] %bitcast = bitcast [1025 x i8]* %op1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1024, i1 false) - %op2 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1024, i1 false) + %op2 = alloca [1025 x i8], align [filtered] %bitcast1 = bitcast [1025 x i8]* %op2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1024, i1 false) - store i8 0, i8* %STRING_LESS, align 1 - %STRING_LESS_ret = load i8, i8* %STRING_LESS, align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1024, i1 false) + store i8 0, i8* %STRING_LESS, align [filtered] + %STRING_LESS_ret = load i8, i8* %STRING_LESS, align [filtered] ret i8 %STRING_LESS_ret } define i16 @baz() { entry: - %baz = alloca i16, align 2 - %a = alloca [81 x i8], align 1 - %result = alloca i8, align 1 + %baz = alloca i16, align [filtered] + %a = alloca [81 x i8], align [filtered] + %result = alloca i8, align [filtered] %0 = bitcast [81 x i8]* %a to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - store i8 0, i8* %result, align 1 - store i16 0, i16* %baz, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + store i8 0, i8* %result, align [filtered] + store i16 0, i16* %baz, align [filtered] %1 = bitcast [81 x i8]* %a to i8* %call = call i8 @STRING_LESS(i8* %1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_0, i32 0, i32 0)) - store i8 %call, i8* %result, align 1 - %baz_ret = load i16, i16* %baz, align 2 + store i8 %call, i8* %result, align [filtered] + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_not_equal_with_constant_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_not_equal_with_constant_test.snap index 93dc818a6e5..bb30e658307 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_not_equal_with_constant_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_not_equal_with_constant_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -12,36 +11,36 @@ target triple = "[filtered]" define i8 @STRING_EQUAL(i8* %0, i8* %1) { entry: - %STRING_EQUAL = alloca i8, align 1 - %op1 = alloca [1025 x i8], align 1 + %STRING_EQUAL = alloca i8, align [filtered] + %op1 = alloca [1025 x i8], align [filtered] %bitcast = bitcast [1025 x i8]* %op1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1024, i1 false) - %op2 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1024, i1 false) + %op2 = alloca [1025 x i8], align [filtered] %bitcast1 = bitcast [1025 x i8]* %op2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1024, i1 false) - store i8 0, i8* %STRING_EQUAL, align 1 - %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1024, i1 false) + store i8 0, i8* %STRING_EQUAL, align [filtered] + %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align [filtered] ret i8 %STRING_EQUAL_ret } define i16 @baz() { entry: - %baz = alloca i16, align 2 - %a = alloca [81 x i8], align 1 - %result = alloca i8, align 1 + %baz = alloca i16, align [filtered] + %a = alloca [81 x i8], align [filtered] + %result = alloca i8, align [filtered] %0 = bitcast [81 x i8]* %a to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - store i8 0, i8* %result, align 1 - store i16 0, i16* %baz, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + store i8 0, i8* %result, align [filtered] + store i16 0, i16* %baz, align [filtered] %1 = bitcast [81 x i8]* %a to i8* %call = call i8 @STRING_EQUAL(i8* %1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_0, i32 0, i32 0)) %2 = icmp ne i8 %call, 0 %tmpVar = xor i1 %2, true %3 = zext i1 %tmpVar to i8 - store i8 %3, i8* %result, align 1 - %baz_ret = load i16, i16* %baz, align 2 + store i8 %3, i8* %result, align [filtered] + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_smaller_or_equal_with_constant_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_smaller_or_equal_with_constant_test.snap index 95e590d5bfc..4e3d249ca2d 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_smaller_or_equal_with_constant_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__compare_instructions_tests__string_smaller_or_equal_with_constant_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/compare_instructions_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -12,48 +11,48 @@ target triple = "[filtered]" define i8 @STRING_LESS(i8* %0, i8* %1) { entry: - %STRING_LESS = alloca i8, align 1 - %op1 = alloca [1025 x i8], align 1 + %STRING_LESS = alloca i8, align [filtered] + %op1 = alloca [1025 x i8], align [filtered] %bitcast = bitcast [1025 x i8]* %op1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1024, i1 false) - %op2 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1024, i1 false) + %op2 = alloca [1025 x i8], align [filtered] %bitcast1 = bitcast [1025 x i8]* %op2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1024, i1 false) - store i8 0, i8* %STRING_LESS, align 1 - %STRING_LESS_ret = load i8, i8* %STRING_LESS, align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1024, i1 false) + store i8 0, i8* %STRING_LESS, align [filtered] + %STRING_LESS_ret = load i8, i8* %STRING_LESS, align [filtered] ret i8 %STRING_LESS_ret } define i8 @STRING_EQUAL(i8* %0, i8* %1) { entry: - %STRING_EQUAL = alloca i8, align 1 - %op1 = alloca [1025 x i8], align 1 + %STRING_EQUAL = alloca i8, align [filtered] + %op1 = alloca [1025 x i8], align [filtered] %bitcast = bitcast [1025 x i8]* %op1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1024, i1 false) - %op2 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1024, i1 false) + %op2 = alloca [1025 x i8], align [filtered] %bitcast1 = bitcast [1025 x i8]* %op2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1024, i1 false) - store i8 0, i8* %STRING_EQUAL, align 1 - %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1024, i1 false) + store i8 0, i8* %STRING_EQUAL, align [filtered] + %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align [filtered] ret i8 %STRING_EQUAL_ret } define i16 @baz() { entry: - %baz = alloca i16, align 2 - %a = alloca [81 x i8], align 1 - %b = alloca [81 x i8], align 1 - %result = alloca i8, align 1 + %baz = alloca i16, align [filtered] + %a = alloca [81 x i8], align [filtered] + %b = alloca [81 x i8], align [filtered] + %result = alloca i8, align [filtered] %0 = bitcast [81 x i8]* %a to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %1 = bitcast [81 x i8]* %b to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - store i8 0, i8* %result, align 1 - store i16 0, i16* %baz, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + store i8 0, i8* %result, align [filtered] + store i16 0, i16* %baz, align [filtered] %2 = bitcast [81 x i8]* %a to i8* %call = call i8 @STRING_EQUAL(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_0, i32 0, i32 0)) %3 = icmp ne i8 %call, 0 @@ -68,8 +67,8 @@ entry: 7: ; preds = %4, %entry %8 = phi i1 [ %3, %entry ], [ %6, %4 ] %9 = zext i1 %8 to i8 - store i8 %9, i8* %result, align 1 - %baz_ret = load i16, i16* %baz, align 2 + store i8 %9, i8* %result, align [filtered] + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_array_variable.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_array_variable.snap index dc6e405fac6..a0217e5b221 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_array_variable.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_array_variable.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/constants_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,7 +16,7 @@ define void @main(%main* %0) { entry: %arr = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %1 = bitcast [4 x i16]* %arr to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 bitcast ([4 x i16]* @const_arr to i8*), i64 ptrtoint ([4 x i16]* getelementptr ([4 x i16], [4 x i16]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] bitcast ([4 x i16]* @const_arr to i8*), i64 ptrtoint ([4 x i16]* getelementptr ([4 x i16], [4 x i16]* null, i32 1) to i64), i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_string_variable.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_string_variable.snap index 27329fb55ed..91ba871b72f 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_string_variable.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_string_variable.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/constants_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,7 +16,7 @@ define void @main(%main* %0) { entry: %str = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %1 = bitcast [81 x i8]* %str to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([81 x i8], [81 x i8]* @const_str, i32 0, i32 0), i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([81 x i8], [81 x i8]* @const_str, i32 0, i32 0), i32 80, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_struct_variable.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_struct_variable.snap index 21412d7c014..ae9cbdcc32a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_struct_variable.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__constants_tests__assigning_const_struct_variable.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/constants_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -19,7 +18,7 @@ define void @main(%main* %0) { entry: %strct = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %1 = bitcast %Point* %strct to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 bitcast (%Point* @const_strct to i8*), i64 ptrtoint (%Point* getelementptr (%Point, %Point* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] bitcast (%Point* @const_strct to i8*), i64 ptrtoint (%Point* getelementptr (%Point, %Point* null, i32 1) to i64), i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap index 6fe7d773967..daad42631a9 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap @@ -17,9 +17,9 @@ target triple = "[filtered]" define void @__init_mystruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 - %deref = load %myStruct*, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] + %deref = load %myStruct*, %myStruct** %self, align [filtered] %b = getelementptr inbounds %myStruct, %myStruct* %deref, i32 0, i32 1 call void @__init_mystruct2(%myStruct2* %b) ret void @@ -27,16 +27,16 @@ entry: define void @__init_mystruct2(%myStruct2* %0) { entry: - %self = alloca %myStruct2*, align 8 - store %myStruct2* %0, %myStruct2** %self, align 8 + %self = alloca %myStruct2*, align [filtered] + store %myStruct2* %0, %myStruct2** %self, align [filtered] ret void } define void @__user_init_myStruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 - %deref = load %myStruct*, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] + %deref = load %myStruct*, %myStruct** %self, align [filtered] %b = getelementptr inbounds %myStruct, %myStruct* %deref, i32 0, i32 1 call void @__user_init_myStruct2(%myStruct2* %b) ret void @@ -44,8 +44,8 @@ entry: define void @__user_init_myStruct2(%myStruct2* %0) { entry: - %self = alloca %myStruct2*, align 8 - store %myStruct2* %0, %myStruct2** %self, align 8 + %self = alloca %myStruct2*, align [filtered] + store %myStruct2* %0, %myStruct2** %self, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap index c331905c234..892ca523bdb 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap @@ -16,15 +16,15 @@ target triple = "[filtered]" define void @__init_mystruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__user_init_myStruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__bitaccess_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__bitaccess_assignment.snap index 4b2293d2d98..f89f69774d0 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__bitaccess_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__bitaccess_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/directaccess_test.rs expression: prog -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,29 +9,29 @@ target triple = "[filtered]" define i16 @main() { entry: - %main = alloca i16, align 2 - %a = alloca i8, align 1 - %b = alloca i16, align 2 - store i8 0, i8* %a, align 1 - store i16 1, i16* %b, align 2 - store i16 0, i16* %main, align 2 - %0 = load i8, i8* %a, align 1 + %main = alloca i16, align [filtered] + %a = alloca i8, align [filtered] + %b = alloca i16, align [filtered] + store i8 0, i8* %a, align [filtered] + store i16 1, i16* %b, align [filtered] + store i16 0, i16* %main, align [filtered] + %0 = load i8, i8* %a, align [filtered] %erase = and i8 %0, -3 %or = or i8 %erase, 2 - store i8 %or, i8* %a, align 1 - %1 = load i8, i8* %a, align 1 + store i8 %or, i8* %a, align [filtered] + %1 = load i8, i8* %a, align [filtered] %erase1 = and i8 %1, -5 %or2 = or i8 %erase1, 0 - store i8 %or2, i8* %a, align 1 - %2 = load i8, i8* %a, align 1 - %load_b = load i16, i16* %b, align 2 + store i8 %or2, i8* %a, align [filtered] + %2 = load i8, i8* %a, align [filtered] + %load_b = load i16, i16* %b, align [filtered] %3 = trunc i16 %load_b to i8 %shift = shl i8 1, %3 %invert = xor i8 %shift, -1 %erase3 = and i8 %2, %invert %value = shl i8 0, %3 %or4 = or i8 %erase3, %value - store i8 %or4, i8* %a, align 1 - %main_ret = load i16, i16* %main, align 2 + store i8 %or4, i8* %a, align [filtered] + %main_ret = load i16, i16* %main, align [filtered] ret i16 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__byteaccess_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__byteaccess_assignment.snap index e48f28c90a4..7e8c36820ee 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__byteaccess_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__byteaccess_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/directaccess_test.rs expression: prog -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,14 +9,14 @@ target triple = "[filtered]" define i16 @main() { entry: - %main = alloca i16, align 2 - %b = alloca i16, align 2 - store i16 0, i16* %b, align 2 - store i16 0, i16* %main, align 2 - %0 = load i16, i16* %b, align 2 + %main = alloca i16, align [filtered] + %b = alloca i16, align [filtered] + store i16 0, i16* %b, align [filtered] + store i16 0, i16* %main, align [filtered] + %0 = load i16, i16* %b, align [filtered] %erase = and i16 %0, -256 %or = or i16 %erase, 2 - store i16 %or, i16* %b, align 2 - %main_ret = load i16, i16* %main, align 2 + store i16 %or, i16* %b, align [filtered] + %main_ret = load i16, i16* %main, align [filtered] ret i16 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__chained_bit_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__chained_bit_assignment.snap index 252078d7155..fcacf09dd71 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__chained_bit_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__chained_bit_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/directaccess_test.rs expression: prog -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,14 +9,14 @@ target triple = "[filtered]" define i16 @main() { entry: - %main = alloca i16, align 2 - %d = alloca i64, align 8 - store i64 0, i64* %d, align 8 - store i16 0, i16* %main, align 2 - %0 = load i64, i64* %d, align 8 + %main = alloca i16, align [filtered] + %d = alloca i64, align [filtered] + store i64 0, i64* %d, align [filtered] + store i16 0, i16* %main, align [filtered] + %0 = load i64, i64* %d, align [filtered] %erase = and i64 %0, -8589934593 %or = or i64 %erase, 8589934592 - store i64 %or, i64* %d, align 8 - %main_ret = load i16, i16* %main, align 2 + store i64 %or, i64* %d, align [filtered] + %main_ret = load i16, i16* %main, align [filtered] ret i16 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__dwordaccess_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__dwordaccess_assignment.snap index 81a282dc6a2..f92caebfd0b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__dwordaccess_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__dwordaccess_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/directaccess_test.rs expression: prog -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,14 +9,14 @@ target triple = "[filtered]" define i16 @main() { entry: - %main = alloca i16, align 2 - %d = alloca i64, align 8 - store i64 0, i64* %d, align 8 - store i16 0, i16* %main, align 2 - %0 = load i64, i64* %d, align 8 + %main = alloca i16, align [filtered] + %d = alloca i64, align [filtered] + store i64 0, i64* %d, align [filtered] + store i16 0, i16* %main, align [filtered] + %0 = load i64, i64* %d, align [filtered] %erase = and i64 %0, -4294967296 %or = or i64 %erase, 11259375 - store i64 %or, i64* %d, align 8 - %main_ret = load i16, i16* %main, align 2 + store i64 %or, i64* %d, align [filtered] + %main_ret = load i16, i16* %main, align [filtered] ret i16 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__lwordaccess_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__lwordaccess_assignment.snap index 5fd655f9cd5..47c9e772e1c 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__lwordaccess_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__lwordaccess_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/directaccess_test.rs expression: prog -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,14 +9,14 @@ target triple = "[filtered]" define i16 @main() { entry: - %main = alloca i16, align 2 - %d = alloca i64, align 8 - store i64 0, i64* %d, align 8 - store i16 0, i16* %main, align 2 - %0 = load i64, i64* %d, align 8 + %main = alloca i16, align [filtered] + %d = alloca i64, align [filtered] + store i64 0, i64* %d, align [filtered] + store i16 0, i16* %main, align [filtered] + %0 = load i64, i64* %d, align [filtered] %erase = and i64 %0, poison %or = or i64 %erase, poison - store i64 %or, i64* %d, align 8 - %main_ret = load i16, i16* %main, align 2 + store i64 %or, i64* %d, align [filtered] + %main_ret = load i16, i16* %main, align [filtered] ret i16 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__qualified_reference_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__qualified_reference_assignment.snap index a362bf19fa5..1748706877d 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__qualified_reference_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__qualified_reference_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/directaccess_test.rs expression: prog -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,22 +13,22 @@ target triple = "[filtered]" define i16 @main() { entry: - %main = alloca i16, align 2 - %str = alloca %myStruct, align 8 + %main = alloca i16, align [filtered] + %str = alloca %myStruct, align [filtered] %0 = bitcast %myStruct* %str to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%myStruct, %myStruct* @__myStruct__init, i32 0, i32 0), i64 ptrtoint (%myStruct* getelementptr (%myStruct, %myStruct* null, i32 1) to i64), i1 false) - store i16 0, i16* %main, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds (%myStruct, %myStruct* @__myStruct__init, i32 0, i32 0), i64 ptrtoint (%myStruct* getelementptr (%myStruct, %myStruct* null, i32 1) to i64), i1 false) + store i16 0, i16* %main, align [filtered] %x = getelementptr inbounds %myStruct, %myStruct* %str, i32 0, i32 0 - %1 = load i8, i8* %x, align 1 + %1 = load i8, i8* %x, align [filtered] %erase = and i8 %1, -2 %or = or i8 %erase, 0 - store i8 %or, i8* %x, align 1 + store i8 %or, i8* %x, align [filtered] %x1 = getelementptr inbounds %myStruct, %myStruct* %str, i32 0, i32 0 - %2 = load i8, i8* %x1, align 1 + %2 = load i8, i8* %x1, align [filtered] %erase2 = and i8 %2, -3 %or3 = or i8 %erase2, 2 - store i8 %or3, i8* %x1, align 1 - %main_ret = load i16, i16* %main, align 2 + store i8 %or3, i8* %x1, align [filtered] + %main_ret = load i16, i16* %main, align [filtered] ret i16 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__wordaccess_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__wordaccess_assignment.snap index 2e9a2e79209..0f13959a8aa 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__wordaccess_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__directaccess_test__wordaccess_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/directaccess_test.rs expression: prog -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,14 +9,14 @@ target triple = "[filtered]" define i16 @main() { entry: - %main = alloca i16, align 2 - %c = alloca i32, align 4 - store i32 0, i32* %c, align 4 - store i16 0, i16* %main, align 2 - %0 = load i32, i32* %c, align 4 + %main = alloca i16, align [filtered] + %c = alloca i32, align [filtered] + store i32 0, i32* %c, align [filtered] + store i16 0, i16* %main, align [filtered] + %0 = load i32, i32* %c, align [filtered] %erase = and i32 %0, -65536 %or = or i32 %erase, 256 - store i32 %or, i32* %c, align 4 - %main_ret = load i16, i16* %main, align 2 + store i32 %or, i32* %c, align [filtered] + %main_ret = load i16, i16* %main, align [filtered] ret i16 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__access_string_via_byte_array.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__access_string_via_byte_array.snap index dc00a25e2ca..92f8b8e38be 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__access_string_via_byte_array.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__access_string_via_byte_array.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,8 +17,8 @@ entry: %ptr = getelementptr inbounds %baz, %baz* %0, i32 0, i32 1 %bytes = getelementptr inbounds %baz, %baz* %0, i32 0, i32 2 %1 = bitcast [11 x i8]* %str to i8* - store i8* %1, i8** %ptr, align 8 + store i8* %1, i8** %ptr, align [filtered] %2 = bitcast [11 x i8]* %str to [10 x i8]* - store [10 x i8]* %2, [10 x i8]** %bytes, align 8 + store [10 x i8]* %2, [10 x i8]** %bytes, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__allowed_assignable_types.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__allowed_assignable_types.snap index 8e5bdf249c9..811ada1e597 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__allowed_assignable_types.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__allowed_assignable_types.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,24 +17,24 @@ entry: %x = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %y = getelementptr inbounds %main, %main* %0, i32 0, i32 2 %z = getelementptr inbounds %main, %main* %0, i32 0, i32 3 - store i16 0, i16* %v, align 2 + store i16 0, i16* %v, align [filtered] %tmpVar = getelementptr inbounds [2 x i16], [2 x i16]* %x, i32 0, i32 0 - store i16 1, i16* %tmpVar, align 2 - %deref = load i16*, i16** %y, align 8 - store i16 2, i16* %deref, align 2 - %deref1 = load i16*, i16** %y, align 8 - %1 = load i16, i16* %deref1, align 2 + store i16 1, i16* %tmpVar, align [filtered] + %deref = load i16*, i16** %y, align [filtered] + store i16 2, i16* %deref, align [filtered] + %deref1 = load i16*, i16** %y, align [filtered] + %1 = load i16, i16* %deref1, align [filtered] %erase = and i16 %1, -3 %or = or i16 %erase, 6 - store i16 %or, i16* %deref1, align 2 - %deref2 = load [2 x i16]*, [2 x i16]** %z, align 8 + store i16 %or, i16* %deref1, align [filtered] + %deref2 = load [2 x i16]*, [2 x i16]** %z, align [filtered] %tmpVar3 = getelementptr inbounds [2 x i16], [2 x i16]* %deref2, i32 0, i32 0 - store i16 4, i16* %tmpVar3, align 2 - %deref4 = load [2 x i16]*, [2 x i16]** %z, align 8 + store i16 4, i16* %tmpVar3, align [filtered] + %deref4 = load [2 x i16]*, [2 x i16]** %z, align [filtered] %tmpVar5 = getelementptr inbounds [2 x i16], [2 x i16]* %deref4, i32 0, i32 1 - %2 = load i16, i16* %tmpVar5, align 2 + %2 = load i16, i16* %tmpVar5, align [filtered] %erase6 = and i16 %2, -3 %or7 = or i16 %erase6, 10 - store i16 %or7, i16* %tmpVar5, align 2 + store i16 %or7, i16* %tmpVar5, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_float.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_float.snap index 2701661b9b0..7ac0bd6e922 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_float.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_float.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,24 +9,24 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca float, align 4 - %x2 = alloca float, align 4 - %x3 = alloca float, align 4 - %l1 = alloca double, align 8 - store float 0.000000e+00, float* %x1, align 4 - store float 0.000000e+00, float* %x2, align 4 - store float 0.000000e+00, float* %x3, align 4 - store double 0.000000e+00, double* %l1, align 8 - store i32 0, i32* %main, align 4 - %load_x1 = load float, float* %x1, align 4 - %load_x2 = load float, float* %x2, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca float, align [filtered] + %x2 = alloca float, align [filtered] + %x3 = alloca float, align [filtered] + %l1 = alloca double, align [filtered] + store float 0.000000e+00, float* %x1, align [filtered] + store float 0.000000e+00, float* %x2, align [filtered] + store float 0.000000e+00, float* %x3, align [filtered] + store double 0.000000e+00, double* %l1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load float, float* %x1, align [filtered] + %load_x2 = load float, float* %x2, align [filtered] %tmpVar = fadd float %load_x1, %load_x2 - %load_x3 = load float, float* %x3, align 4 + %load_x3 = load float, float* %x3, align [filtered] %tmpVar1 = fadd float %tmpVar, %load_x3 %0 = fpext float %tmpVar1 to double - %load_l1 = load double, double* %l1, align 8 + %load_l1 = load double, double* %l1, align [filtered] %tmpVar2 = fadd double %0, %load_l1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_ints.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_ints.snap index 59b07c00168..37bf314d969 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_ints.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_ints.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,29 +9,29 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca i32, align 4 - %x2 = alloca i32, align 4 - %x3 = alloca i32, align 4 - %l1 = alloca i64, align 8 - %s1 = alloca i8, align 1 - store i32 0, i32* %x1, align 4 - store i32 0, i32* %x2, align 4 - store i32 0, i32* %x3, align 4 - store i64 0, i64* %l1, align 8 - store i8 0, i8* %s1, align 1 - store i32 0, i32* %main, align 4 - %load_x1 = load i32, i32* %x1, align 4 - %load_x2 = load i32, i32* %x2, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca i32, align [filtered] + %x2 = alloca i32, align [filtered] + %x3 = alloca i32, align [filtered] + %l1 = alloca i64, align [filtered] + %s1 = alloca i8, align [filtered] + store i32 0, i32* %x1, align [filtered] + store i32 0, i32* %x2, align [filtered] + store i32 0, i32* %x3, align [filtered] + store i64 0, i64* %l1, align [filtered] + store i8 0, i8* %s1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load i32, i32* %x1, align [filtered] + %load_x2 = load i32, i32* %x2, align [filtered] %tmpVar = add i32 %load_x1, %load_x2 - %load_x3 = load i32, i32* %x3, align 4 + %load_x3 = load i32, i32* %x3, align [filtered] %tmpVar1 = add i32 %tmpVar, %load_x3 %0 = sext i32 %tmpVar1 to i64 - %load_l1 = load i64, i64* %l1, align 8 + %load_l1 = load i64, i64* %l1, align [filtered] %tmpVar2 = add i64 %0, %load_l1 - %load_s1 = load i8, i8* %s1, align 1 + %load_s1 = load i8, i8* %s1, align [filtered] %1 = sext i8 %load_s1 to i64 %tmpVar3 = add i64 %tmpVar2, %1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_mixed.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_mixed.snap index 16a32739060..2c973398866 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_mixed.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_add_mixed.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,25 +9,25 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca float, align 4 - %x2 = alloca float, align 4 - %x3 = alloca float, align 4 - %l1 = alloca i64, align 8 - store float 0.000000e+00, float* %x1, align 4 - store float 0.000000e+00, float* %x2, align 4 - store float 0.000000e+00, float* %x3, align 4 - store i64 0, i64* %l1, align 8 - store i32 0, i32* %main, align 4 - %load_x1 = load float, float* %x1, align 4 - %load_x2 = load float, float* %x2, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca float, align [filtered] + %x2 = alloca float, align [filtered] + %x3 = alloca float, align [filtered] + %l1 = alloca i64, align [filtered] + store float 0.000000e+00, float* %x1, align [filtered] + store float 0.000000e+00, float* %x2, align [filtered] + store float 0.000000e+00, float* %x3, align [filtered] + store i64 0, i64* %l1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load float, float* %x1, align [filtered] + %load_x2 = load float, float* %x2, align [filtered] %tmpVar = fadd float %load_x1, %load_x2 - %load_x3 = load float, float* %x3, align 4 + %load_x3 = load float, float* %x3, align [filtered] %tmpVar1 = fadd float %tmpVar, %load_x3 %0 = fpext float %tmpVar1 to double - %load_l1 = load i64, i64* %l1, align 8 + %load_l1 = load i64, i64* %l1, align [filtered] %1 = sitofp i64 %load_l1 to double %tmpVar2 = fadd double %0, %1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_float.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_float.snap index 1a160e40127..47894b11478 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_float.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_float.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,16 +9,16 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca float, align 4 - %l1 = alloca double, align 8 - store float 0.000000e+00, float* %x1, align 4 - store double 0.000000e+00, double* %l1, align 8 - store i32 0, i32* %main, align 4 - %load_x1 = load float, float* %x1, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca float, align [filtered] + %l1 = alloca double, align [filtered] + store float 0.000000e+00, float* %x1, align [filtered] + store double 0.000000e+00, double* %l1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load float, float* %x1, align [filtered] %0 = fpext float %load_x1 to double - %load_l1 = load double, double* %l1, align 8 + %load_l1 = load double, double* %l1, align [filtered] %tmpVar = fdiv double %0, %load_l1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_ints.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_ints.snap index c69b0880467..e4aa6a880ce 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_ints.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_ints.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,16 +9,16 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca i32, align 4 - %l1 = alloca i64, align 8 - store i32 0, i32* %x1, align 4 - store i64 0, i64* %l1, align 8 - store i32 0, i32* %main, align 4 - %load_x1 = load i32, i32* %x1, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca i32, align [filtered] + %l1 = alloca i64, align [filtered] + store i32 0, i32* %x1, align [filtered] + store i64 0, i64* %l1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load i32, i32* %x1, align [filtered] %0 = sext i32 %load_x1 to i64 - %load_l1 = load i64, i64* %l1, align 8 + %load_l1 = load i64, i64* %l1, align [filtered] %tmpVar = sdiv i64 %0, %load_l1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_mixed.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_mixed.snap index eaf59af3bfd..4bf77d85e66 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_mixed.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_div_mixed.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,17 +9,17 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca float, align 4 - %l1 = alloca i64, align 8 - store float 0.000000e+00, float* %x1, align 4 - store i64 0, i64* %l1, align 8 - store i32 0, i32* %main, align 4 - %load_x1 = load float, float* %x1, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca float, align [filtered] + %l1 = alloca i64, align [filtered] + store float 0.000000e+00, float* %x1, align [filtered] + store i64 0, i64* %l1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load float, float* %x1, align [filtered] %0 = fpext float %load_x1 to double - %load_l1 = load i64, i64* %l1, align 8 + %load_l1 = load i64, i64* %l1, align [filtered] %1 = sitofp i64 %load_l1 to double %tmpVar = fdiv double %0, %1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_mux.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_mux.snap index 54bbdcdd388..6382f69b006 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_mux.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_mux.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -19,7 +18,7 @@ entry: %c = getelementptr inbounds %main, %main* %0, i32 0, i32 2 %d = getelementptr inbounds %main, %main* %0, i32 0, i32 3 %e = getelementptr inbounds %main, %main* %0, i32 0, i32 4 - %1 = alloca i32, align 4 + %1 = alloca i32, align [filtered] switch i32 3, label %continue_block [ i32 0, label %2 i32 1, label %3 @@ -28,27 +27,27 @@ entry: ] 2: ; preds = %entry - %load_b = load i32, i32* %b, align 4 - store i32 %load_b, i32* %1, align 4 + %load_b = load i32, i32* %b, align [filtered] + store i32 %load_b, i32* %1, align [filtered] br label %continue_block 3: ; preds = %entry - %load_c = load i32, i32* %c, align 4 - store i32 %load_c, i32* %1, align 4 + %load_c = load i32, i32* %c, align [filtered] + store i32 %load_c, i32* %1, align [filtered] br label %continue_block 4: ; preds = %entry - %load_d = load i32, i32* %d, align 4 - store i32 %load_d, i32* %1, align 4 + %load_d = load i32, i32* %d, align [filtered] + store i32 %load_d, i32* %1, align [filtered] br label %continue_block 5: ; preds = %entry - %load_e = load i32, i32* %e, align 4 - store i32 %load_e, i32* %1, align 4 + %load_e = load i32, i32* %e, align [filtered] + store i32 %load_e, i32* %1, align [filtered] br label %continue_block continue_block: ; preds = %entry, %5, %4, %3, %2 - %6 = load i32, i32* %1, align 4 - store i32 %6, i32* %a, align 4 + %6 = load i32, i32* %1, align [filtered] + store i32 %6, i32* %a, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_mux_with_aggregate_type.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_mux_with_aggregate_type.snap index fafbbbb858f..054b234041c 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_mux_with_aggregate_type.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_mux_with_aggregate_type.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -19,7 +18,7 @@ target triple = "[filtered]" define void @main(%main* %0) { entry: %str1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - %1 = alloca [81 x i8], align 1 + %1 = alloca [81 x i8], align [filtered] switch i32 3, label %continue_block [ i32 0, label %2 i32 1, label %4 @@ -29,28 +28,28 @@ entry: 2: ; preds = %entry %3 = bitcast [81 x i8]* %1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_2, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_2, i32 0, i32 0), i32 6, i1 false) br label %continue_block 4: ; preds = %entry %5 = bitcast [81 x i8]* %1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %5, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %5, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) br label %continue_block 6: ; preds = %entry %7 = bitcast [81 x i8]* %1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %7, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %7, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) br label %continue_block 8: ; preds = %entry %9 = bitcast [81 x i8]* %1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %9, i8* align 1 getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_3, i32 0, i32 0), i32 4, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %9, i8* align [filtered] getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_3, i32 0, i32 0), i32 4, i1 false) br label %continue_block continue_block: ; preds = %entry, %8, %6, %4, %2 %10 = bitcast [81 x i8]* %str1 to i8* %11 = bitcast [81 x i8]* %1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %10, i8* align 1 %11, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %10, i8* align [filtered] %11, i32 80, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_sel_as_expression.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_sel_as_expression.snap index 8c256a2997d..6cf93b94bc0 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_sel_as_expression.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_sel_as_expression.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,10 +16,10 @@ entry: %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %c = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_b = load i32, i32* %b, align 4 - %load_c = load i32, i32* %c, align 4 + %load_b = load i32, i32* %b, align [filtered] + %load_c = load i32, i32* %c, align [filtered] %1 = select i1 true, i32 %load_c, i32 %load_b %tmpVar = add i32 %1, 10 - store i32 %tmpVar, i32* %a, align 4 + store i32 %tmpVar, i32* %a, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_upper_bound_expr.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_upper_bound_expr.snap index 074c65ee680..1e2b21dc5a5 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_upper_bound_expr.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_function_call_upper_bound_expr.snap @@ -18,37 +18,37 @@ define void @main(%main* %0) { entry: %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - %auto_deref = load [16 x i32], [16 x i32]* %a, align 4 + %auto_deref = load [16 x i32], [16 x i32]* %a, align [filtered] %outer_arr_gep = getelementptr inbounds [16 x i32], [16 x i32]* %a, i32 0, i32 0 - %vla_struct = alloca %__foo_vla, align 8 + %vla_struct = alloca %__foo_vla, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 1 - store [8 x i32] [i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3, i32 4], [2 x i32]* %vla_dimensions_gep, align 4 - store i32* %outer_arr_gep, i32** %vla_array_gep, align 8 - %1 = load %__foo_vla, %__foo_vla* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_vla, align 8 - store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align 8 + store [8 x i32] [i32 0, i32 1, i32 1, i32 2, i32 2, i32 3, i32 3, i32 4], [2 x i32]* %vla_dimensions_gep, align [filtered] + store i32* %outer_arr_gep, i32** %vla_array_gep, align [filtered] + %1 = load %__foo_vla, %__foo_vla* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_vla, align [filtered] + store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align [filtered] %call = call i32 @foo(%__foo_vla* %vla_struct_ptr) - store i32 %call, i32* %b, align 4 + store i32 %call, i32* %b, align [filtered] ret void } define i32 @foo(%__foo_vla* %0) { entry: - %foo = alloca i32, align 4 - %vla = alloca %__foo_vla*, align 8 - store %__foo_vla* %0, %__foo_vla** %vla, align 8 - store i32 0, i32* %foo, align 4 - %deref = load %__foo_vla*, %__foo_vla** %vla, align 8 + %foo = alloca i32, align [filtered] + %vla = alloca %__foo_vla*, align [filtered] + store %__foo_vla* %0, %__foo_vla** %vla, align [filtered] + store i32 0, i32* %foo, align [filtered] + %deref = load %__foo_vla*, %__foo_vla** %vla, align [filtered] %dim = getelementptr inbounds %__foo_vla, %__foo_vla* %deref, i32 0, i32 1 %1 = getelementptr inbounds [2 x i32], [2 x i32]* %dim, i32 0, i32 7 - %2 = load i32, i32* %1, align 4 - store i32 %2, i32* %foo, align 4 - %deref1 = load %__foo_vla*, %__foo_vla** %vla, align 8 + %2 = load i32, i32* %1, align [filtered] + store i32 %2, i32* %foo, align [filtered] + %deref1 = load %__foo_vla*, %__foo_vla** %vla, align [filtered] %dim2 = getelementptr inbounds %__foo_vla, %__foo_vla* %deref1, i32 0, i32 1 %3 = getelementptr inbounds [2 x i32], [2 x i32]* %dim2, i32 0, i32 7 - %4 = load i32, i32* %3, align 4 - store i32 %4, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %4 = load i32, i32* %3, align [filtered] + store i32 %4, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_float.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_float.snap index 6ddf786f115..2b37eeda38e 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_float.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_float.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,24 +9,24 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca float, align 4 - %x2 = alloca float, align 4 - %x3 = alloca float, align 4 - %l1 = alloca double, align 8 - store float 0.000000e+00, float* %x1, align 4 - store float 0.000000e+00, float* %x2, align 4 - store float 0.000000e+00, float* %x3, align 4 - store double 0.000000e+00, double* %l1, align 8 - store i32 0, i32* %main, align 4 - %load_x1 = load float, float* %x1, align 4 - %load_x2 = load float, float* %x2, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca float, align [filtered] + %x2 = alloca float, align [filtered] + %x3 = alloca float, align [filtered] + %l1 = alloca double, align [filtered] + store float 0.000000e+00, float* %x1, align [filtered] + store float 0.000000e+00, float* %x2, align [filtered] + store float 0.000000e+00, float* %x3, align [filtered] + store double 0.000000e+00, double* %l1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load float, float* %x1, align [filtered] + %load_x2 = load float, float* %x2, align [filtered] %tmpVar = fmul float %load_x1, %load_x2 - %load_x3 = load float, float* %x3, align 4 + %load_x3 = load float, float* %x3, align [filtered] %tmpVar1 = fmul float %tmpVar, %load_x3 %0 = fpext float %tmpVar1 to double - %load_l1 = load double, double* %l1, align 8 + %load_l1 = load double, double* %l1, align [filtered] %tmpVar2 = fmul double %0, %load_l1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_ints.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_ints.snap index cfd9cb9b506..6539b06b3bf 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_ints.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_ints.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,29 +9,29 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca i32, align 4 - %x2 = alloca i32, align 4 - %x3 = alloca i32, align 4 - %l1 = alloca i64, align 8 - %s1 = alloca i8, align 1 - store i32 0, i32* %x1, align 4 - store i32 0, i32* %x2, align 4 - store i32 0, i32* %x3, align 4 - store i64 0, i64* %l1, align 8 - store i8 0, i8* %s1, align 1 - store i32 0, i32* %main, align 4 - %load_x1 = load i32, i32* %x1, align 4 - %load_x2 = load i32, i32* %x2, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca i32, align [filtered] + %x2 = alloca i32, align [filtered] + %x3 = alloca i32, align [filtered] + %l1 = alloca i64, align [filtered] + %s1 = alloca i8, align [filtered] + store i32 0, i32* %x1, align [filtered] + store i32 0, i32* %x2, align [filtered] + store i32 0, i32* %x3, align [filtered] + store i64 0, i64* %l1, align [filtered] + store i8 0, i8* %s1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load i32, i32* %x1, align [filtered] + %load_x2 = load i32, i32* %x2, align [filtered] %tmpVar = mul i32 %load_x1, %load_x2 - %load_x3 = load i32, i32* %x3, align 4 + %load_x3 = load i32, i32* %x3, align [filtered] %tmpVar1 = mul i32 %tmpVar, %load_x3 %0 = sext i32 %tmpVar1 to i64 - %load_l1 = load i64, i64* %l1, align 8 + %load_l1 = load i64, i64* %l1, align [filtered] %tmpVar2 = mul i64 %0, %load_l1 - %load_s1 = load i8, i8* %s1, align 1 + %load_s1 = load i8, i8* %s1, align [filtered] %1 = sext i8 %load_s1 to i64 %tmpVar3 = mul i64 %tmpVar2, %1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_mixed.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_mixed.snap index 3dca5426871..1428036800b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_mixed.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_mul_mixed.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,25 +9,25 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca float, align 4 - %x2 = alloca float, align 4 - %x3 = alloca float, align 4 - %l1 = alloca i64, align 8 - store float 0.000000e+00, float* %x1, align 4 - store float 0.000000e+00, float* %x2, align 4 - store float 0.000000e+00, float* %x3, align 4 - store i64 0, i64* %l1, align 8 - store i32 0, i32* %main, align 4 - %load_x1 = load float, float* %x1, align 4 - %load_x2 = load float, float* %x2, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca float, align [filtered] + %x2 = alloca float, align [filtered] + %x3 = alloca float, align [filtered] + %l1 = alloca i64, align [filtered] + store float 0.000000e+00, float* %x1, align [filtered] + store float 0.000000e+00, float* %x2, align [filtered] + store float 0.000000e+00, float* %x3, align [filtered] + store i64 0, i64* %l1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load float, float* %x1, align [filtered] + %load_x2 = load float, float* %x2, align [filtered] %tmpVar = fmul float %load_x1, %load_x2 - %load_x3 = load float, float* %x3, align 4 + %load_x3 = load float, float* %x3, align [filtered] %tmpVar1 = fmul float %tmpVar, %load_x3 %0 = fpext float %tmpVar1 to double - %load_l1 = load i64, i64* %l1, align 8 + %load_l1 = load i64, i64* %l1, align [filtered] %1 = sitofp i64 %load_l1 to double %tmpVar2 = fmul double %0, %1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_float.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_float.snap index 3f77b3c1b28..0317b3f29bd 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_float.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_float.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,16 +9,16 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca float, align 4 - %l1 = alloca double, align 8 - store float 0.000000e+00, float* %x1, align 4 - store double 0.000000e+00, double* %l1, align 8 - store i32 0, i32* %main, align 4 - %load_x1 = load float, float* %x1, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca float, align [filtered] + %l1 = alloca double, align [filtered] + store float 0.000000e+00, float* %x1, align [filtered] + store double 0.000000e+00, double* %l1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load float, float* %x1, align [filtered] %0 = fpext float %load_x1 to double - %load_l1 = load double, double* %l1, align 8 + %load_l1 = load double, double* %l1, align [filtered] %tmpVar = fsub double %0, %load_l1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_ints.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_ints.snap index 53dbc27765f..8ee9e8ae824 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_ints.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_ints.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,16 +9,16 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca i32, align 4 - %l1 = alloca i64, align 8 - store i32 0, i32* %x1, align 4 - store i64 0, i64* %l1, align 8 - store i32 0, i32* %main, align 4 - %load_x1 = load i32, i32* %x1, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca i32, align [filtered] + %l1 = alloca i64, align [filtered] + store i32 0, i32* %x1, align [filtered] + store i64 0, i64* %l1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load i32, i32* %x1, align [filtered] %0 = sext i32 %load_x1 to i64 - %load_l1 = load i64, i64* %l1, align 8 + %load_l1 = load i64, i64* %l1, align [filtered] %tmpVar = sub i64 %0, %load_l1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_mixed.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_mixed.snap index 474d64aae76..415b300e4de 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_mixed.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__builtin_sub_mixed.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,17 +9,17 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca float, align 4 - %l1 = alloca i64, align 8 - store float 0.000000e+00, float* %x1, align 4 - store i64 0, i64* %l1, align 8 - store i32 0, i32* %main, align 4 - %load_x1 = load float, float* %x1, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca float, align [filtered] + %l1 = alloca i64, align [filtered] + store float 0.000000e+00, float* %x1, align [filtered] + store i64 0, i64* %l1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_x1 = load float, float* %x1, align [filtered] %0 = fpext float %load_x1 to double - %load_l1 = load i64, i64* %l1, align 8 + %load_l1 = load i64, i64* %l1, align [filtered] %1 = sitofp i64 %load_l1 to double %tmpVar = fsub double %0, %1 - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__calling_strings_in_function_return.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__calling_strings_in_function_return.snap index e66c9de1046..6be624c2fa2 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__calling_strings_in_function_return.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__calling_strings_in_function_return.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,24 +14,24 @@ target triple = "[filtered]" define void @func(i8* %0) { entry: - %func = alloca i8*, align 8 - store i8* %0, i8** %func, align 8 - %deref = load i8*, i8** %func, align 8 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %deref, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + %func = alloca i8*, align [filtered] + store i8* %0, i8** %func, align [filtered] + %deref = load i8*, i8** %func, align [filtered] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %deref, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) ret void } define void @main(%main* %0) { entry: %x = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - %__func0 = alloca [81 x i8], align 1 + %__func0 = alloca [81 x i8], align [filtered] %1 = bitcast [81 x i8]* %__func0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [81 x i8]* %__func0 to i8* call void @func(i8* %2) %3 = bitcast [81 x i8]* %x to i8* %4 = bitcast [81 x i8]* %__func0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 %4, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] %4, i32 80, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_between_pointer_types.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_between_pointer_types.snap index 65efa9a8b22..b32fc32c6af 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_between_pointer_types.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_between_pointer_types.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,6 +16,6 @@ entry: %ptr_x = getelementptr inbounds %baz, %baz* %0, i32 0, i32 0 %y = getelementptr inbounds %baz, %baz* %0, i32 0, i32 1 %1 = bitcast i16* %y to i8* - store i8* %1, i8** %ptr_x, align 8 + store i8* %1, i8** %ptr_x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_lword_to_pointer.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_lword_to_pointer.snap index f5abb26bb98..c2444bef36b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_lword_to_pointer.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_lword_to_pointer.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,15 +9,15 @@ target triple = "[filtered]" define i16 @baz() { entry: - %baz = alloca i16, align 2 - %ptr_x = alloca i16*, align 8 - %y = alloca i64, align 8 - store i16* null, i16** %ptr_x, align 8 - store i64 0, i64* %y, align 8 - store i16 0, i16* %baz, align 2 - %load_y = load i64, i64* %y, align 8 + %baz = alloca i16, align [filtered] + %ptr_x = alloca i16*, align [filtered] + %y = alloca i64, align [filtered] + store i16* null, i16** %ptr_x, align [filtered] + store i64 0, i64* %y, align [filtered] + store i16 0, i16* %baz, align [filtered] + %load_y = load i64, i64* %y, align [filtered] %0 = inttoptr i64 %load_y to i16* - store i16* %0, i16** %ptr_x, align 8 - %baz_ret = load i16, i16* %baz, align 2 + store i16* %0, i16** %ptr_x, align [filtered] + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_pointer_to_lword.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_pointer_to_lword.snap index b3924c389a9..68255271f21 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_pointer_to_lword.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__cast_pointer_to_lword.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,15 +9,15 @@ target triple = "[filtered]" define i16 @baz() { entry: - %baz = alloca i16, align 2 - %ptr_x = alloca i16*, align 8 - %y = alloca i64, align 8 - store i16* null, i16** %ptr_x, align 8 - store i64 0, i64* %y, align 8 - store i16 0, i16* %baz, align 2 - %load_ptr_x = load i16*, i16** %ptr_x, align 8 + %baz = alloca i16, align [filtered] + %ptr_x = alloca i16*, align [filtered] + %y = alloca i64, align [filtered] + store i16* null, i16** %ptr_x, align [filtered] + store i64 0, i64* %y, align [filtered] + store i16 0, i16* %baz, align [filtered] + %load_ptr_x = load i16*, i16** %ptr_x, align [filtered] %0 = ptrtoint i16* %load_ptr_x to i64 - store i64 %0, i64* %y, align 8 - %baz_ret = load i16, i16* %baz, align 2 + store i64 %0, i64* %y, align [filtered] + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__compare_date_time_literals.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__compare_date_time_literals.snap index d2434cc9bd2..fd1c4fe23f6 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__compare_date_time_literals.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__compare_date_time_literals.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,29 +13,29 @@ target triple = "[filtered]" define void @main(%main* %0) { entry: - %cmp1 = alloca i8, align 1 - %cmp2 = alloca i8, align 1 - %cmp3 = alloca i8, align 1 - %cmp4 = alloca i8, align 1 - %cmp5 = alloca i8, align 1 - %cmp6 = alloca i8, align 1 - %cmp7 = alloca i8, align 1 - %cmp8 = alloca i8, align 1 - store i8 0, i8* %cmp1, align 1 - store i8 0, i8* %cmp2, align 1 - store i8 0, i8* %cmp3, align 1 - store i8 0, i8* %cmp4, align 1 - store i8 0, i8* %cmp5, align 1 - store i8 0, i8* %cmp6, align 1 - store i8 0, i8* %cmp7, align 1 - store i8 0, i8* %cmp8, align 1 - store i8 0, i8* %cmp1, align 1 - store i8 1, i8* %cmp2, align 1 - store i8 0, i8* %cmp3, align 1 - store i8 1, i8* %cmp4, align 1 - store i8 0, i8* %cmp5, align 1 - store i8 1, i8* %cmp6, align 1 - store i8 0, i8* %cmp7, align 1 - store i8 1, i8* %cmp8, align 1 + %cmp1 = alloca i8, align [filtered] + %cmp2 = alloca i8, align [filtered] + %cmp3 = alloca i8, align [filtered] + %cmp4 = alloca i8, align [filtered] + %cmp5 = alloca i8, align [filtered] + %cmp6 = alloca i8, align [filtered] + %cmp7 = alloca i8, align [filtered] + %cmp8 = alloca i8, align [filtered] + store i8 0, i8* %cmp1, align [filtered] + store i8 0, i8* %cmp2, align [filtered] + store i8 0, i8* %cmp3, align [filtered] + store i8 0, i8* %cmp4, align [filtered] + store i8 0, i8* %cmp5, align [filtered] + store i8 0, i8* %cmp6, align [filtered] + store i8 0, i8* %cmp7, align [filtered] + store i8 0, i8* %cmp8, align [filtered] + store i8 0, i8* %cmp1, align [filtered] + store i8 1, i8* %cmp2, align [filtered] + store i8 0, i8* %cmp3, align [filtered] + store i8 1, i8* %cmp4, align [filtered] + store i8 0, i8* %cmp5, align [filtered] + store i8 1, i8* %cmp6, align [filtered] + store i8 0, i8* %cmp7, align [filtered] + store i8 1, i8* %cmp8, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__max_int.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__max_int.snap index 72e6e9d7f07..7b72409f228 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__max_int.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__max_int.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,27 +9,27 @@ target triple = "[filtered]" define i16 @main() { entry: - %main = alloca i16, align 2 - store i16 0, i16* %main, align 2 - %0 = alloca [7 x i16], align 2 + %main = alloca i16, align [filtered] + store i16 0, i16* %main, align [filtered] + %0 = alloca [7 x i16], align [filtered] %1 = getelementptr inbounds [7 x i16], [7 x i16]* %0, i32 0, i32 0 - store i16 5, i16* %1, align 2 + store i16 5, i16* %1, align [filtered] %2 = getelementptr inbounds [7 x i16], [7 x i16]* %0, i32 0, i32 1 - store i16 2, i16* %2, align 2 + store i16 2, i16* %2, align [filtered] %3 = getelementptr inbounds [7 x i16], [7 x i16]* %0, i32 0, i32 2 - store i16 1, i16* %3, align 2 + store i16 1, i16* %3, align [filtered] %4 = getelementptr inbounds [7 x i16], [7 x i16]* %0, i32 0, i32 3 - store i16 3, i16* %4, align 2 + store i16 3, i16* %4, align [filtered] %5 = getelementptr inbounds [7 x i16], [7 x i16]* %0, i32 0, i32 4 - store i16 4, i16* %5, align 2 + store i16 4, i16* %5, align [filtered] %6 = getelementptr inbounds [7 x i16], [7 x i16]* %0, i32 0, i32 5 - store i16 7, i16* %6, align 2 + store i16 7, i16* %6, align [filtered] %7 = getelementptr inbounds [7 x i16], [7 x i16]* %0, i32 0, i32 6 - store i16 -1, i16* %7, align 2 + store i16 -1, i16* %7, align [filtered] %8 = bitcast [7 x i16]* %0 to i16* %call = call i16 @MAX__INT(i32 7, i16* %8) - store i16 %call, i16* %main, align 2 - %main_ret = load i16, i16* %main, align 2 + store i16 %call, i16* %main, align [filtered] + %main_ret = load i16, i16* %main, align [filtered] ret i16 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__nested_call_statements.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__nested_call_statements.snap index eec1c96c3a5..e45fdda1ce1 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__nested_call_statements.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__nested_call_statements.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,11 +13,11 @@ target triple = "[filtered]" define i32 @foo(i32 %0) { entry: - %foo = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 %0, i32* %a, align 4 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %a = alloca i32, align [filtered] + store i32 %0, i32* %a, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointer_arithmetics.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointer_arithmetics.snap index 9c16959f23a..c0daa0980bb 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointer_arithmetics.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointer_arithmetics.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,49 +16,49 @@ entry: %x = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %y = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %pt = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - store i16* %x, i16** %pt, align 8 - %load_pt = load i16*, i16** %pt, align 8 + store i16* %x, i16** %pt, align [filtered] + %load_pt = load i16*, i16** %pt, align [filtered] %access___main_pt = getelementptr inbounds i16, i16* %load_pt, i32 1 - store i16* %access___main_pt, i16** %pt, align 8 - %load_pt1 = load i16*, i16** %pt, align 8 + store i16* %access___main_pt, i16** %pt, align [filtered] + %load_pt1 = load i16*, i16** %pt, align [filtered] %access___main_pt2 = getelementptr inbounds i16, i16* %load_pt1, i32 1 %access___main_pt3 = getelementptr inbounds i16, i16* %access___main_pt2, i32 1 - store i16* %access___main_pt3, i16** %pt, align 8 - %load_pt4 = load i16*, i16** %pt, align 8 + store i16* %access___main_pt3, i16** %pt, align [filtered] + %load_pt4 = load i16*, i16** %pt, align [filtered] %access___main_pt5 = getelementptr inbounds i16, i16* %load_pt4, i32 1 - store i16* %access___main_pt5, i16** %pt, align 8 - %load_pt6 = load i16*, i16** %pt, align 8 - %load_y = load i16, i16* %y, align 2 + store i16* %access___main_pt5, i16** %pt, align [filtered] + %load_pt6 = load i16*, i16** %pt, align [filtered] + %load_y = load i16, i16* %y, align [filtered] %1 = sub i16 0, %load_y %access___main_pt7 = getelementptr inbounds i16, i16* %load_pt6, i16 %1 - store i16* %access___main_pt7, i16** %pt, align 8 - %load_pt8 = load i16*, i16** %pt, align 8 + store i16* %access___main_pt7, i16** %pt, align [filtered] + %load_pt8 = load i16*, i16** %pt, align [filtered] %access___main_pt9 = getelementptr inbounds i16, i16* %load_pt8, i32 1 %access___main_pt10 = getelementptr inbounds i16, i16* %access___main_pt9, i32 1 - store i16* %access___main_pt10, i16** %pt, align 8 - %load_pt11 = load i16*, i16** %pt, align 8 - %load_y12 = load i16, i16* %y, align 2 + store i16* %access___main_pt10, i16** %pt, align [filtered] + %load_pt11 = load i16*, i16** %pt, align [filtered] + %load_y12 = load i16, i16* %y, align [filtered] %2 = sub i16 0, %load_y12 %access___main_pt13 = getelementptr inbounds i16, i16* %load_pt11, i16 %2 %access___main_pt14 = getelementptr inbounds i16, i16* %access___main_pt13, i32 -1 - store i16* %access___main_pt14, i16** %pt, align 8 - %load_pt15 = load i16*, i16** %pt, align 8 + store i16* %access___main_pt14, i16** %pt, align [filtered] + %load_pt15 = load i16*, i16** %pt, align [filtered] %access___main_pt16 = getelementptr inbounds i16, i16* %load_pt15, i32 2 - store i16* %access___main_pt16, i16** %pt, align 8 - %load_y17 = load i16, i16* %y, align 2 - %load_pt18 = load i16*, i16** %pt, align 8 + store i16* %access___main_pt16, i16** %pt, align [filtered] + %load_y17 = load i16, i16* %y, align [filtered] + %load_pt18 = load i16*, i16** %pt, align [filtered] %access___main_pt19 = getelementptr inbounds i16, i16* %load_pt18, i16 %load_y17 - %load_y20 = load i16, i16* %y, align 2 + %load_y20 = load i16, i16* %y, align [filtered] %3 = sub i16 0, %load_y20 %access___main_pt21 = getelementptr inbounds i16, i16* %access___main_pt19, i16 %3 - store i16* %access___main_pt21, i16** %pt, align 8 - %load_y22 = load i16, i16* %y, align 2 + store i16* %access___main_pt21, i16** %pt, align [filtered] + %load_y22 = load i16, i16* %y, align [filtered] %4 = sext i16 %load_y22 to i32 - %load_y23 = load i16, i16* %y, align 2 + %load_y23 = load i16, i16* %y, align [filtered] %5 = sext i16 %load_y23 to i32 %tmpVar = add i32 %4, %5 - %load_pt24 = load i16*, i16** %pt, align 8 + %load_pt24 = load i16*, i16** %pt, align [filtered] %access___main_pt25 = getelementptr inbounds i16, i16* %load_pt24, i32 %tmpVar - store i16* %access___main_pt25, i16** %pt, align 8 + store i16* %access___main_pt25, i16** %pt, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointer_arithmetics_function_call.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointer_arithmetics_function_call.snap index c629ccd91b6..49e99f96f3a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointer_arithmetics_function_call.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointer_arithmetics_function_call.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,9 +13,9 @@ target triple = "[filtered]" define i64 @foo() { entry: - %foo = alloca i64, align 8 - store i64 0, i64* %foo, align 8 - %foo_ret = load i64, i64* %foo, align 8 + %foo = alloca i64, align [filtered] + store i64 0, i64* %foo, align [filtered] + %foo_ret = load i64, i64* %foo, align [filtered] ret i64 %foo_ret } @@ -24,10 +23,10 @@ define void @main(%main* %0) { entry: %pt = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %x = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - store i16* %x, i16** %pt, align 8 - %load_pt = load i16*, i16** %pt, align 8 + store i16* %x, i16** %pt, align [filtered] + %load_pt = load i16*, i16** %pt, align [filtered] %call = call i64 @foo() %access___main_pt = getelementptr inbounds i16, i16* %load_pt, i64 %call - store i16* %access___main_pt, i16** %pt, align 8 + store i16* %access___main_pt, i16** %pt, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointers_in_function_return.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointers_in_function_return.snap index 8df22cc5ee0..f483f21961d 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointers_in_function_return.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__pointers_in_function_return.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,8 +9,8 @@ target triple = "[filtered]" define i16* @func() { entry: - %func = alloca i16*, align 8 - store i16* null, i16** %func, align 8 - %func_ret = load i16*, i16** %func, align 8 + %func = alloca i16*, align [filtered] + store i16* null, i16** %func, align [filtered] + %func_ret = load i16*, i16** %func, align [filtered] ret i16* %func_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__strings_in_function_return.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__strings_in_function_return.snap index 8c555e4de0f..9de0248ec9c 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__strings_in_function_return.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__strings_in_function_return.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -12,15 +11,15 @@ target triple = "[filtered]" define void @func(i8* %0, [81 x i8]* %1) { entry: - %func = alloca i8*, align 8 - store i8* %0, i8** %func, align 8 - %myout = alloca [81 x i8]*, align 8 - store [81 x i8]* %1, [81 x i8]** %myout, align 8 - %deref = load i8*, i8** %func, align 8 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %deref, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) - %deref1 = load [81 x i8]*, [81 x i8]** %myout, align 8 + %func = alloca i8*, align [filtered] + store i8* %0, i8** %func, align [filtered] + %myout = alloca [81 x i8]*, align [filtered] + store [81 x i8]* %1, [81 x i8]** %myout, align [filtered] + %deref = load i8*, i8** %func, align [filtered] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %deref, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + %deref1 = load [81 x i8]*, [81 x i8]** %myout, align [filtered] %2 = bitcast [81 x i8]* %deref1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %2, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__structs_in_function_return.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__structs_in_function_return.snap index d77b542920f..60f6702da12 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__structs_in_function_return.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__structs_in_function_return.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,9 +13,9 @@ target triple = "[filtered]" define void @func(%myStruct* %0, %myStruct* %1) { entry: - %func = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %func, align 8 - %xxx = alloca %myStruct*, align 8 - store %myStruct* %1, %myStruct** %xxx, align 8 + %func = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %func, align [filtered] + %xxx = alloca %myStruct*, align [filtered] + store %myStruct* %1, %myStruct** %xxx, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__type_mix_in_call.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__type_mix_in_call.snap index 043ac4293ac..0414d1c3227 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__type_mix_in_call.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__type_mix_in_call.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,19 +9,19 @@ target triple = "[filtered]" define i16 @foo(i16 %0) { entry: - %foo = alloca i16, align 2 - %in = alloca i16, align 2 - store i16 %0, i16* %in, align 2 - store i16 0, i16* %foo, align 2 - %foo_ret = load i16, i16* %foo, align 2 + %foo = alloca i16, align [filtered] + %in = alloca i16, align [filtered] + store i16 %0, i16* %in, align [filtered] + store i16 0, i16* %foo, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret } define i16 @baz() { entry: - %baz = alloca i16, align 2 - store i16 0, i16* %baz, align 2 + %baz = alloca i16, align [filtered] + store i16 0, i16* %baz, align [filtered] %call = call i16 @foo(i16 1) - %baz_ret = load i16, i16* %baz, align 2 + %baz_ret = load i16, i16* %baz, align [filtered] ret i16 %baz_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__unary_expressions_can_be_real.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__unary_expressions_can_be_real.snap index 86debc2c1cf..122d8d9d216 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__unary_expressions_can_be_real.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__unary_expressions_can_be_real.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,9 +15,9 @@ define void @prg(%prg* %0) { entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - store float -2.000000e+00, float* %b, align 4 - %load_b = load float, float* %b, align 4 + store float -2.000000e+00, float* %b, align [filtered] + %load_b = load float, float* %b, align [filtered] %tmpVar = fneg float %load_b - store float %tmpVar, float* %a, align 4 + store float %tmpVar, float* %a, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__unnecessary_casts_between_pointer_types.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__unnecessary_casts_between_pointer_types.snap index f79941fd0f1..782abd5f008 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__unnecessary_casts_between_pointer_types.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__expression_tests__unnecessary_casts_between_pointer_types.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/expression_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,8 +17,8 @@ entry: %b = getelementptr inbounds %baz, %baz* %0, i32 0, i32 1 %si = getelementptr inbounds %baz, %baz* %0, i32 0, i32 2 %mb = getelementptr inbounds %baz, %baz* %0, i32 0, i32 3 - store i8* %b, i8** %ptr, align 8 - store i8* %si, i8** %ptr, align 8 - store i8* %mb, i8** %ptr, align 8 + store i8* %b, i8** %ptr, align [filtered] + store i8* %si, i8** %ptr, align [filtered] + store i8* %mb, i8** %ptr, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__argument_fed_by_ref_then_by_val.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__argument_fed_by_ref_then_by_val.snap index feada78fd27..8f9684c8969 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__argument_fed_by_ref_then_by_val.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__argument_fed_by_ref_then_by_val.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,39 +9,39 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %arr = alloca [5 x i32], align 4 + %main = alloca i32, align [filtered] + %arr = alloca [5 x i32], align [filtered] %0 = bitcast [5 x i32]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([5 x i32]* getelementptr ([5 x i32], [5 x i32]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([5 x i32]* getelementptr ([5 x i32], [5 x i32]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] %1 = bitcast [5 x i32]* %arr to i32* %call = call i32 @fn_by_ref(i32* %1) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } define i32 @fn_by_ref(i32* %0) { entry: - %fn_by_ref = alloca i32, align 4 - %arg_by_ref = alloca i32*, align 8 - store i32* %0, i32** %arg_by_ref, align 8 - store i32 0, i32* %fn_by_ref, align 4 - %deref = load i32*, i32** %arg_by_ref, align 8 + %fn_by_ref = alloca i32, align [filtered] + %arg_by_ref = alloca i32*, align [filtered] + store i32* %0, i32** %arg_by_ref, align [filtered] + store i32 0, i32* %fn_by_ref, align [filtered] + %deref = load i32*, i32** %arg_by_ref, align [filtered] %call = call i32 @fn_by_val(i32* %deref) - %fn_by_ref_ret = load i32, i32* %fn_by_ref, align 4 + %fn_by_ref_ret = load i32, i32* %fn_by_ref, align [filtered] ret i32 %fn_by_ref_ret } define i32 @fn_by_val(i32* %0) { entry: - %fn_by_val = alloca i32, align 4 - %arg_by_val = alloca [5 x i32], align 4 + %fn_by_val = alloca i32, align [filtered] + %arg_by_val = alloca [5 x i32], align [filtered] %bitcast = bitcast [5 x i32]* %arg_by_val to i32* %1 = bitcast i32* %bitcast to i8* %2 = bitcast i32* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint ([5 x i32]* getelementptr ([5 x i32], [5 x i32]* null, i32 1) to i64), i1 false) - store i32 0, i32* %fn_by_val, align 4 - %fn_by_val_ret = load i32, i32* %fn_by_val, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint ([5 x i32]* getelementptr ([5 x i32], [5 x i32]* null, i32 1) to i64), i1 false) + store i32 0, i32* %fn_by_val, align [filtered] + %fn_by_val_ret = load i32, i32* %fn_by_val, align [filtered] ret i32 %fn_by_val_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__autocast_argument_literals_for_function_call.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__autocast_argument_literals_for_function_call.snap index 525fbc99b66..10a92e0d822 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__autocast_argument_literals_for_function_call.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__autocast_argument_literals_for_function_call.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,39 +13,39 @@ target triple = "[filtered]" define i32 @func(i8* %0, i16* %1, i32* %2, i64* %3, float* %4, double* %5) { entry: - %func = alloca i32, align 4 - %byInt1 = alloca i8*, align 8 - store i8* %0, i8** %byInt1, align 8 - %byInt2 = alloca i16*, align 8 - store i16* %1, i16** %byInt2, align 8 - %byInt3 = alloca i32*, align 8 - store i32* %2, i32** %byInt3, align 8 - %byInt4 = alloca i64*, align 8 - store i64* %3, i64** %byInt4, align 8 - %byReal1 = alloca float*, align 8 - store float* %4, float** %byReal1, align 8 - %byReal2 = alloca double*, align 8 - store double* %5, double** %byReal2, align 8 - store i32 0, i32* %func, align 4 - store i32 1, i32* %func, align 4 - %func_ret = load i32, i32* %func, align 4 + %func = alloca i32, align [filtered] + %byInt1 = alloca i8*, align [filtered] + store i8* %0, i8** %byInt1, align [filtered] + %byInt2 = alloca i16*, align [filtered] + store i16* %1, i16** %byInt2, align [filtered] + %byInt3 = alloca i32*, align [filtered] + store i32* %2, i32** %byInt3, align [filtered] + %byInt4 = alloca i64*, align [filtered] + store i64* %3, i64** %byInt4, align [filtered] + %byReal1 = alloca float*, align [filtered] + store float* %4, float** %byReal1, align [filtered] + %byReal2 = alloca double*, align [filtered] + store double* %5, double** %byReal2, align [filtered] + store i32 0, i32* %func, align [filtered] + store i32 1, i32* %func, align [filtered] + %func_ret = load i32, i32* %func, align [filtered] ret i32 %func_ret } define void @main(%main* %0) { entry: - %1 = alloca i8, align 1 - store i8 1, i8* %1, align 1 - %2 = alloca i16, align 2 - store i16 2, i16* %2, align 2 - %3 = alloca i32, align 4 - store i32 3, i32* %3, align 4 - %4 = alloca i64, align 8 - store i64 4, i64* %4, align 8 - %5 = alloca float, align 4 - store float 5.000000e+00, float* %5, align 4 - %6 = alloca double, align 8 - store double 6.000000e+00, double* %6, align 8 + %1 = alloca i8, align [filtered] + store i8 1, i8* %1, align [filtered] + %2 = alloca i16, align [filtered] + store i16 2, i16* %2, align [filtered] + %3 = alloca i32, align [filtered] + store i32 3, i32* %3, align [filtered] + %4 = alloca i64, align [filtered] + store i64 4, i64* %4, align [filtered] + %5 = alloca float, align [filtered] + store float 5.000000e+00, float* %5, align [filtered] + %6 = alloca double, align [filtered] + store double 6.000000e+00, double* %6, align [filtered] %call = call i32 @func(i8* %1, i16* %2, i32* %3, i64* %4, float* %5, double* %6) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__bitcast_argument_references_for_function_call.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__bitcast_argument_references_for_function_call.snap index 90a480f3f89..743dd15f88f 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__bitcast_argument_references_for_function_call.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__bitcast_argument_references_for_function_call.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,49 +13,49 @@ target triple = "[filtered]" define i8 @fn_sint(i8* %0, i8* %1) { entry: - %fn_sint = alloca i8, align 1 - %in_ref = alloca i8*, align 8 - store i8* %0, i8** %in_ref, align 8 - %in_out = alloca i8*, align 8 - store i8* %1, i8** %in_out, align 8 - store i8 0, i8* %fn_sint, align 1 - %fn_sint_ret = load i8, i8* %fn_sint, align 1 + %fn_sint = alloca i8, align [filtered] + %in_ref = alloca i8*, align [filtered] + store i8* %0, i8** %in_ref, align [filtered] + %in_out = alloca i8*, align [filtered] + store i8* %1, i8** %in_out, align [filtered] + store i8 0, i8* %fn_sint, align [filtered] + %fn_sint_ret = load i8, i8* %fn_sint, align [filtered] ret i8 %fn_sint_ret } define i64 @fn_lint(i64* %0, i64* %1) { entry: - %fn_lint = alloca i64, align 8 - %in_ref = alloca i64*, align 8 - store i64* %0, i64** %in_ref, align 8 - %in_out = alloca i64*, align 8 - store i64* %1, i64** %in_out, align 8 - store i64 0, i64* %fn_lint, align 8 - %fn_lint_ret = load i64, i64* %fn_lint, align 8 + %fn_lint = alloca i64, align [filtered] + %in_ref = alloca i64*, align [filtered] + store i64* %0, i64** %in_ref, align [filtered] + %in_out = alloca i64*, align [filtered] + store i64* %1, i64** %in_out, align [filtered] + store i64 0, i64* %fn_lint, align [filtered] + %fn_lint_ret = load i64, i64* %fn_lint, align [filtered] ret i64 %fn_lint_ret } define i64 @fn_real(float* %0, float* %1) { entry: - %fn_real = alloca i64, align 8 - %in_ref = alloca float*, align 8 - store float* %0, float** %in_ref, align 8 - %in_out = alloca float*, align 8 - store float* %1, float** %in_out, align 8 - store i64 0, i64* %fn_real, align 8 - %fn_real_ret = load i64, i64* %fn_real, align 8 + %fn_real = alloca i64, align [filtered] + %in_ref = alloca float*, align [filtered] + store float* %0, float** %in_ref, align [filtered] + %in_out = alloca float*, align [filtered] + store float* %1, float** %in_out, align [filtered] + store i64 0, i64* %fn_real, align [filtered] + %fn_real_ret = load i64, i64* %fn_real, align [filtered] ret i64 %fn_real_ret } define i64 @fn_lreal(double* %0, double* %1) { entry: - %fn_lreal = alloca i64, align 8 - %in_ref = alloca double*, align 8 - store double* %0, double** %in_ref, align 8 - %in_out = alloca double*, align 8 - store double* %1, double** %in_out, align 8 - store i64 0, i64* %fn_lreal, align 8 - %fn_lreal_ret = load i64, i64* %fn_lreal, align 8 + %fn_lreal = alloca i64, align [filtered] + %in_ref = alloca double*, align [filtered] + store double* %0, double** %in_ref, align [filtered] + %in_out = alloca double*, align [filtered] + store double* %1, double** %in_out, align [filtered] + store i64 0, i64* %fn_lreal, align [filtered] + %fn_lreal_ret = load i64, i64* %fn_lreal, align [filtered] ret i64 %fn_lreal_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_call_with_array_access.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_call_with_array_access.snap index 0dec905aa79..9d9ae8f4a38 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_call_with_array_access.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_call_with_array_access.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,25 +9,25 @@ target triple = "[filtered]" define void @foo(i32* %0) { entry: - %foo = alloca i32*, align 8 - store i32* %0, i32** %foo, align 8 - %deref = load i32*, i32** %foo, align 8 - store [5 x i32] [i32 5, i32 4, i32 3, i32 2, i32 1], i32* %deref, align 4 + %foo = alloca i32*, align [filtered] + store i32* %0, i32** %foo, align [filtered] + %deref = load i32*, i32** %foo, align [filtered] + store [5 x i32] [i32 5, i32 4, i32 3, i32 2, i32 1], i32* %deref, align [filtered] ret void } define void @main() { entry: - %value = alloca i32, align 4 - store i32 0, i32* %value, align 4 - %__foo0 = alloca [5 x i32], align 4 + %value = alloca i32, align [filtered] + store i32 0, i32* %value, align [filtered] + %__foo0 = alloca [5 x i32], align [filtered] %0 = bitcast [5 x i32]* %__foo0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([5 x i32]* getelementptr ([5 x i32], [5 x i32]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([5 x i32]* getelementptr ([5 x i32], [5 x i32]* null, i32 1) to i64), i1 false) %1 = bitcast [5 x i32]* %__foo0 to i32* call void @foo(i32* %1) %tmpVar = getelementptr inbounds [5 x i32], [5 x i32]* %__foo0, i32 0, i32 2 - %load_tmpVar = load i32, i32* %tmpVar, align 4 - store i32 %load_tmpVar, i32* %value, align 4 + %load_tmpVar = load i32, i32* %tmpVar, align [filtered] + store i32 %load_tmpVar, i32* %value, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_ref_sized_string_varargs_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_ref_sized_string_varargs_called_in_program.snap index 1fa8f783e47..4c8efb73167 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_ref_sized_string_varargs_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_ref_sized_string_varargs_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -20,15 +19,15 @@ declare i32 @foo(i32, i8**) define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - %1 = alloca [3 x i8*], align 8 + %1 = alloca [3 x i8*], align [filtered] %2 = getelementptr inbounds [3 x i8*], [3 x i8*]* %1, i32 0, i32 0 - store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_0, i32 0, i32 0), i8** %2, align 8 + store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_0, i32 0, i32 0), i8** %2, align [filtered] %3 = getelementptr inbounds [3 x i8*], [3 x i8*]* %1, i32 0, i32 1 - store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_1, i32 0, i32 0), i8** %3, align 8 + store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_1, i32 0, i32 0), i8** %3, align [filtered] %4 = getelementptr inbounds [3 x i8*], [3 x i8*]* %1, i32 0, i32 2 - store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @utf08_literal_2, i32 0, i32 0), i8** %4, align 8 + store i8* getelementptr inbounds ([7 x i8], [7 x i8]* @utf08_literal_2, i32 0, i32 0), i8** %4, align [filtered] %5 = bitcast [3 x i8*]* %1 to i8** %call = call i32 @foo(i32 3, i8** %5) - store i32 %call, i32* %x, align 4 + store i32 %call, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_sized_varargs_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_sized_varargs_called_in_program.snap index 5d9d1419644..2ec3f21c266 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_sized_varargs_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_sized_varargs_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,17 +16,17 @@ declare i32 @foo(i32, i32*) define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %tmpVar = add i32 %load_x, 1 - %1 = alloca [3 x i32], align 4 + %1 = alloca [3 x i32], align [filtered] %2 = getelementptr inbounds [3 x i32], [3 x i32]* %1, i32 0, i32 0 - store i32 0, i32* %2, align 4 + store i32 0, i32* %2, align [filtered] %3 = getelementptr inbounds [3 x i32], [3 x i32]* %1, i32 0, i32 1 - store i32 3, i32* %3, align 4 + store i32 3, i32* %3, align [filtered] %4 = getelementptr inbounds [3 x i32], [3 x i32]* %1, i32 0, i32 2 - store i32 %tmpVar, i32* %4, align 4 + store i32 %tmpVar, i32* %4, align [filtered] %5 = bitcast [3 x i32]* %1 to i32* %call = call i32 @foo(i32 3, i32* %5) - store i32 %call, i32* %x, align 4 + store i32 %call, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_varargs_called_in_program.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_varargs_called_in_program.snap index e4704070640..5dbc266ee26 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_varargs_called_in_program.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__function_with_varargs_called_in_program.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,9 +16,9 @@ declare i32 @foo(...) define void @prg(%prg* %0) { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %tmpVar = add i32 %load_x, 1 %call = call i32 (...) @foo(i1 false, i32 3, i32 %tmpVar) - store i32 %call, i32* %x, align 4 + store i32 %call, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__literal_string_argument_passed_by_ref.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__literal_string_argument_passed_by_ref.snap index 9e5bcb70fa6..852452532dd 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__literal_string_argument_passed_by_ref.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__literal_string_argument_passed_by_ref.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,14 +17,14 @@ declare void @func(i8*, i8*) define void @main(%main* %0) { entry: %res = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - %__func0 = alloca [81 x i8], align 1 + %__func0 = alloca [81 x i8], align [filtered] %1 = bitcast [81 x i8]* %__func0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [81 x i8]* %__func0 to i8* call void @func(i8* %2, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0)) %3 = bitcast [81 x i8]* %res to i8* %4 = bitcast [81 x i8]* %__func0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 %4, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] %4, i32 80, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__member_variables_in_body.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__member_variables_in_body.snap index 2f802f5e93b..cef24617e92 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__member_variables_in_body.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__member_variables_in_body.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,37 +9,37 @@ target triple = "[filtered]" define i32 @func(i16 %0, i8* %1, i64* %2) { entry: - %func = alloca i32, align 4 - %i = alloca i16, align 2 - store i16 %0, i16* %i, align 2 - %io = alloca i8*, align 8 - store i8* %1, i8** %io, align 8 - %o = alloca i64*, align 8 - store i64* %2, i64** %o, align 8 - %v = alloca i16, align 2 - %vt = alloca i16, align 2 - store i16 1, i16* %v, align 2 - store i16 2, i16* %vt, align 2 - store i32 0, i32* %func, align 4 - %load_i = load i16, i16* %i, align 2 + %func = alloca i32, align [filtered] + %i = alloca i16, align [filtered] + store i16 %0, i16* %i, align [filtered] + %io = alloca i8*, align [filtered] + store i8* %1, i8** %io, align [filtered] + %o = alloca i64*, align [filtered] + store i64* %2, i64** %o, align [filtered] + %v = alloca i16, align [filtered] + %vt = alloca i16, align [filtered] + store i16 1, i16* %v, align [filtered] + store i16 2, i16* %vt, align [filtered] + store i32 0, i32* %func, align [filtered] + %load_i = load i16, i16* %i, align [filtered] %3 = sext i16 %load_i to i32 - %deref = load i8*, i8** %io, align 8 - %load_io = load i8, i8* %deref, align 1 + %deref = load i8*, i8** %io, align [filtered] + %load_io = load i8, i8* %deref, align [filtered] %4 = sext i8 %load_io to i32 %tmpVar = mul i32 %3, %4 %5 = sext i32 %tmpVar to i64 - %deref1 = load i64*, i64** %o, align 8 - %load_o = load i64, i64* %deref1, align 8 + %deref1 = load i64*, i64** %o, align [filtered] + %load_o = load i64, i64* %deref1, align [filtered] %tmpVar2 = sub i64 %5, %load_o - %load_v = load i16, i16* %v, align 2 + %load_v = load i16, i16* %v, align [filtered] %6 = sext i16 %load_v to i32 - %load_vt = load i16, i16* %vt, align 2 + %load_vt = load i16, i16* %vt, align [filtered] %7 = sext i16 %load_vt to i32 %tmpVar3 = mul i32 %6, %7 %8 = sext i32 %tmpVar3 to i64 %tmpVar4 = add i64 %tmpVar2, %8 %9 = trunc i64 %tmpVar4 to i32 - store i32 %9, i32* %func, align 4 - %func_ret = load i32, i32* %func, align 4 + store i32 %9, i32* %func, align [filtered] + %func_ret = load i32, i32* %func, align [filtered] ret i32 %func_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__on_functions_var_output_should_be_passed_as_a_pointer.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__on_functions_var_output_should_be_passed_as_a_pointer.snap index e934c713561..3b4950a15d4 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__on_functions_var_output_should_be_passed_as_a_pointer.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__on_functions_var_output_should_be_passed_as_a_pointer.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,13 +9,13 @@ target triple = "[filtered]" define i32 @bump(i8* %0) { entry: - %bump = alloca i32, align 4 - %v = alloca i8*, align 8 - store i8* %0, i8** %v, align 8 - store i32 0, i32* %bump, align 4 - store i32 1, i32* %bump, align 4 - %deref = load i8*, i8** %v, align 8 - store i8 2, i8* %deref, align 1 - %bump_ret = load i32, i32* %bump, align 4 + %bump = alloca i32, align [filtered] + %v = alloca i8*, align [filtered] + store i8* %0, i8** %v, align [filtered] + store i32 0, i32* %bump, align [filtered] + store i32 1, i32* %bump, align [filtered] + %deref = load i8*, i8** %v, align [filtered] + store i8 2, i8* %deref, align [filtered] + %bump_ret = load i32, i32* %bump, align [filtered] ret i32 %bump_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_a_string_to_a_function.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_a_string_to_a_function.snap index 21477f52bfd..b3b6ddb3a0c 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_a_string_to_a_function.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_a_string_to_a_function.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,13 +14,13 @@ target triple = "[filtered]" define i32 @func(i8* %0) { entry: - %func = alloca i32, align 4 - %x = alloca [6 x i8], align 1 + %func = alloca i32, align [filtered] + %x = alloca [6 x i8], align [filtered] %bitcast = bitcast [6 x i8]* %x to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 6, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 5, i1 false) - store i32 0, i32* %func, align 4 - %func_ret = load i32, i32* %func, align 4 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 5, i1 false) + store i32 0, i32* %func, align [filtered] + %func_ret = load i32, i32* %func, align [filtered] ret i32 %func_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_a_string_to_a_function_as_reference.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_a_string_to_a_function_as_reference.snap index af0187d1e38..d373316fc9f 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_a_string_to_a_function_as_reference.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_a_string_to_a_function_as_reference.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,11 +14,11 @@ target triple = "[filtered]" define i32 @func(i8* %0) { entry: - %func = alloca i32, align 4 - %x = alloca i8*, align 8 - store i8* %0, i8** %x, align 8 - store i32 0, i32* %func, align 4 - %func_ret = load i32, i32* %func, align 4 + %func = alloca i32, align [filtered] + %x = alloca i8*, align [filtered] + store i8* %0, i8** %x, align [filtered] + store i32 0, i32* %func, align [filtered] + %func_ret = load i32, i32* %func, align [filtered] ret i32 %func_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_arguments_to_functions_by_ref_and_val.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_arguments_to_functions_by_ref_and_val.snap index 65022ed504f..12038d034dd 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_arguments_to_functions_by_ref_and_val.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__passing_arguments_to_functions_by_ref_and_val.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,39 +13,39 @@ target triple = "[filtered]" define i32 @func(i16* %0, i32* %1, i16 %2, i32 %3) { entry: - %func = alloca i32, align 4 - %byRef1 = alloca i16*, align 8 - store i16* %0, i16** %byRef1, align 8 - %byRef2 = alloca i32*, align 8 - store i32* %1, i32** %byRef2, align 8 - %byVal1 = alloca i16, align 2 - store i16 %2, i16* %byVal1, align 2 - %byVal2 = alloca i32, align 4 - store i32 %3, i32* %byVal2, align 4 - store i32 0, i32* %func, align 4 - %deref = load i16*, i16** %byRef1, align 8 - %load_byRef1 = load i16, i16* %deref, align 2 + %func = alloca i32, align [filtered] + %byRef1 = alloca i16*, align [filtered] + store i16* %0, i16** %byRef1, align [filtered] + %byRef2 = alloca i32*, align [filtered] + store i32* %1, i32** %byRef2, align [filtered] + %byVal1 = alloca i16, align [filtered] + store i16 %2, i16* %byVal1, align [filtered] + %byVal2 = alloca i32, align [filtered] + store i32 %3, i32* %byVal2, align [filtered] + store i32 0, i32* %func, align [filtered] + %deref = load i16*, i16** %byRef1, align [filtered] + %load_byRef1 = load i16, i16* %deref, align [filtered] %4 = sext i16 %load_byRef1 to i32 - %deref1 = load i32*, i32** %byRef2, align 8 - %load_byRef2 = load i32, i32* %deref1, align 4 + %deref1 = load i32*, i32** %byRef2, align [filtered] + %load_byRef2 = load i32, i32* %deref1, align [filtered] %tmpVar = mul i32 %4, %load_byRef2 - %load_byVal1 = load i16, i16* %byVal1, align 2 + %load_byVal1 = load i16, i16* %byVal1, align [filtered] %5 = sext i16 %load_byVal1 to i32 %tmpVar2 = mul i32 %tmpVar, %5 - %deref3 = load i32*, i32** %byRef2, align 8 - %load_byRef24 = load i32, i32* %deref3, align 4 + %deref3 = load i32*, i32** %byRef2, align [filtered] + %load_byRef24 = load i32, i32* %deref3, align [filtered] %tmpVar5 = mul i32 %tmpVar2, %load_byRef24 - store i32 %tmpVar5, i32* %func, align 4 - %func_ret = load i32, i32* %func, align 4 + store i32 %tmpVar5, i32* %func, align [filtered] + %func_ret = load i32, i32* %func, align [filtered] ret i32 %func_ret } define void @main(%main* %0) { entry: - %1 = alloca i16, align 2 - store i16 1, i16* %1, align 2 - %2 = alloca i32, align 4 - store i32 2, i32* %2, align 4 + %1 = alloca i16, align [filtered] + store i16 1, i16* %1, align [filtered] + %2 = alloca i32, align [filtered] + store i32 2, i32* %2, align [filtered] %call = call i32 @func(i16* %1, i32* %2, i16 3, i32 4) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__return_variable_in_nested_call.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__return_variable_in_nested_call.snap index fac468d1b33..bdea575f75a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__return_variable_in_nested_call.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__return_variable_in_nested_call.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: codegen(src) -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,25 +9,25 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x1 = alloca i32, align 4 - %x2 = alloca i32, align 4 - store i32 0, i32* %x1, align 4 - store i32 0, i32* %x2, align 4 - store i32 0, i32* %main, align 4 + %main = alloca i32, align [filtered] + %x1 = alloca i32, align [filtered] + %x2 = alloca i32, align [filtered] + store i32 0, i32* %x1, align [filtered] + store i32 0, i32* %x2, align [filtered] + store i32 0, i32* %main, align [filtered] %0 = ptrtoint i32* %main to i64 %call = call i32 @SMC_Read(i64 %0) - store i32 %call, i32* %x1, align 4 - %main_ret = load i32, i32* %main, align 4 + store i32 %call, i32* %x1, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } define i32 @SMC_Read(i64 %0) { entry: - %SMC_Read = alloca i32, align 4 - %ValAddr = alloca i64, align 8 - store i64 %0, i64* %ValAddr, align 8 - store i32 0, i32* %SMC_Read, align 4 - %SMC_Read_ret = load i32, i32* %SMC_Read, align 4 + %SMC_Read = alloca i32, align [filtered] + %ValAddr = alloca i64, align [filtered] + store i64 %0, i64* %ValAddr, align [filtered] + store i32 0, i32* %SMC_Read, align [filtered] + %SMC_Read_ret = load i32, i32* %SMC_Read, align [filtered] ret i32 %SMC_Read_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__simple_call.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__simple_call.snap index 1e6ec2c6f93..909cbcffcf6 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__simple_call.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__simple_call.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,21 +13,21 @@ target triple = "[filtered]" define i32 @func(i32 %0) { entry: - %func = alloca i32, align 4 - %x = alloca i32, align 4 - store i32 %0, i32* %x, align 4 - store i32 0, i32* %func, align 4 - %func_ret = load i32, i32* %func, align 4 + %func = alloca i32, align [filtered] + %x = alloca i32, align [filtered] + store i32 %0, i32* %x, align [filtered] + store i32 0, i32* %func, align [filtered] + %func_ret = load i32, i32* %func, align [filtered] ret i32 %func_ret } define void @main(%main* %0) { entry: %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - %load_a = load i32, i32* %a, align 4 + %load_a = load i32, i32* %a, align [filtered] %call = call i32 @func(i32 %load_a) %call1 = call i32 @func(i32 1) - %load_a2 = load i32, i32* %a, align 4 + %load_a2 = load i32, i32* %a, align [filtered] %tmpVar = add i32 1, %load_a2 %call3 = call i32 @func(i32 %tmpVar) ret void diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__var_output_in_function_call.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__var_output_in_function_call.snap index 102eab2916e..63cebac9b4b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__var_output_in_function_call.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__function_tests__var_output_in_function_call.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/function_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,14 +13,14 @@ target triple = "[filtered]" define i32 @func(i16* %0) { entry: - %func = alloca i32, align 4 - %o = alloca i16*, align 8 - store i16* %0, i16** %o, align 8 - store i32 0, i32* %func, align 4 - %deref = load i16*, i16** %o, align 8 - store i16 6, i16* %deref, align 2 - store i32 4, i32* %func, align 4 - %func_ret = load i32, i32* %func, align 4 + %func = alloca i32, align [filtered] + %o = alloca i16*, align [filtered] + store i16* %0, i16** %o, align [filtered] + store i32 0, i32* %func, align [filtered] + %deref = load i16*, i16** %o, align [filtered] + store i16 6, i16* %deref, align [filtered] + store i32 4, i32* %func, align [filtered] + %func_ret = load i32, i32* %func, align [filtered] ret i32 %func_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__any_real_function_called_with_ints.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__any_real_function_called_with_ints.snap index 75db1b553cf..98df689a5c7 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__any_real_function_called_with_ints.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__any_real_function_called_with_ints.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/generics_test.rs expression: codegen(src) -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,11 +13,11 @@ target triple = "[filtered]" define float @foo__REAL(float %0) { entry: - %foo__REAL = alloca float, align 4 - %in1 = alloca float, align 4 - store float %0, float* %in1, align 4 - store float 0.000000e+00, float* %foo__REAL, align 4 - %foo__REAL_ret = load float, float* %foo__REAL, align 4 + %foo__REAL = alloca float, align [filtered] + %in1 = alloca float, align [filtered] + store float %0, float* %in1, align [filtered] + store float 0.000000e+00, float* %foo__REAL, align [filtered] + %foo__REAL_ret = load float, float* %foo__REAL, align [filtered] ret float %foo__REAL_ret } @@ -32,30 +31,30 @@ entry: %res_uint = getelementptr inbounds %prg, %prg* %0, i32 0, i32 5 %res_udint = getelementptr inbounds %prg, %prg* %0, i32 0, i32 6 %res_ulint = getelementptr inbounds %prg, %prg* %0, i32 0, i32 7 - %v_dint = alloca i32, align 4 - %v_udint = alloca i32, align 4 - store i32 1, i32* %v_dint, align 4 - store i32 1, i32* %v_udint, align 4 + %v_dint = alloca i32, align [filtered] + %v_udint = alloca i32, align [filtered] + store i32 1, i32* %v_dint, align [filtered] + store i32 1, i32* %v_udint, align [filtered] %call = call float @foo__REAL(float 1.000000e+00) - store float %call, float* %res_sint, align 4 + store float %call, float* %res_sint, align [filtered] %call1 = call float @foo__REAL(float 1.000000e+00) - store float %call1, float* %res_int, align 4 - %load_v_dint = load i32, i32* %v_dint, align 4 + store float %call1, float* %res_int, align [filtered] + %load_v_dint = load i32, i32* %v_dint, align [filtered] %1 = sitofp i32 %load_v_dint to float %call2 = call float @foo__REAL(float %1) - store float %call2, float* %res_dint, align 4 + store float %call2, float* %res_dint, align [filtered] %call3 = call double @foo__LREAL(double 1.000000e+00) - store double %call3, double* %res_lint, align 8 + store double %call3, double* %res_lint, align [filtered] %call4 = call float @foo__REAL(float 1.000000e+00) - store float %call4, float* %res_usint, align 4 + store float %call4, float* %res_usint, align [filtered] %call5 = call float @foo__REAL(float 1.000000e+00) - store float %call5, float* %res_uint, align 4 - %load_v_udint = load i32, i32* %v_udint, align 4 + store float %call5, float* %res_uint, align [filtered] + %load_v_udint = load i32, i32* %v_udint, align [filtered] %2 = sitofp i32 %load_v_udint to float %call6 = call float @foo__REAL(float %2) - store float %call6, float* %res_udint, align 4 + store float %call6, float* %res_udint, align [filtered] %call7 = call double @foo__LREAL(double 1.000000e+00) - store double %call7, double* %res_ulint, align 8 + store double %call7, double* %res_ulint, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_call_gets_cast_to_biggest_type.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_call_gets_cast_to_biggest_type.snap index cb83c6d237d..8fc170e8825 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_call_gets_cast_to_biggest_type.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_call_gets_cast_to_biggest_type.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/generics_test.rs expression: codegen(src) -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,21 +9,21 @@ target triple = "[filtered]" define double @main() { entry: - %main = alloca double, align 8 - store double 0.000000e+00, double* %main, align 8 - %0 = alloca [4 x double], align 8 + %main = alloca double, align [filtered] + store double 0.000000e+00, double* %main, align [filtered] + %0 = alloca [4 x double], align [filtered] %1 = getelementptr inbounds [4 x double], [4 x double]* %0, i32 0, i32 0 - store double 5.000000e+00, double* %1, align 8 + store double 5.000000e+00, double* %1, align [filtered] %2 = getelementptr inbounds [4 x double], [4 x double]* %0, i32 0, i32 1 - store double 1.000000e+00, double* %2, align 8 + store double 1.000000e+00, double* %2, align [filtered] %3 = getelementptr inbounds [4 x double], [4 x double]* %0, i32 0, i32 2 - store double 1.500000e+00, double* %3, align 8 + store double 1.500000e+00, double* %3, align [filtered] %4 = getelementptr inbounds [4 x double], [4 x double]* %0, i32 0, i32 3 - store double 1.200000e+00, double* %4, align 8 + store double 1.200000e+00, double* %4, align [filtered] %5 = bitcast [4 x double]* %0 to double* %call = call double @MAX__LREAL(i32 4, double* %5) - store double %call, double* %main, align 8 - %main_ret = load double, double* %main, align 8 + store double %call, double* %main, align [filtered] + %main_ret = load double, double* %main, align [filtered] ret double %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_codegen_with_aggregate_return.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_codegen_with_aggregate_return.snap index 378dda5c867..d087f86077c 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_codegen_with_aggregate_return.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_codegen_with_aggregate_return.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/generics_test.rs expression: prg -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -12,24 +11,24 @@ target triple = "[filtered]" define void @main(i8* %0) { entry: - %main = alloca i8*, align 8 - store i8* %0, i8** %main, align 8 - %l = alloca i32, align 4 - %p = alloca i32, align 4 - store i32 0, i32* %l, align 4 - store i32 0, i32* %p, align 4 - store i32 4, i32* %l, align 4 - store i32 6, i32* %p, align 4 - %__MID0 = alloca [81 x i8], align 1 + %main = alloca i8*, align [filtered] + store i8* %0, i8** %main, align [filtered] + %l = alloca i32, align [filtered] + %p = alloca i32, align [filtered] + store i32 0, i32* %l, align [filtered] + store i32 0, i32* %p, align [filtered] + store i32 4, i32* %l, align [filtered] + store i32 6, i32* %p, align [filtered] + %__MID0 = alloca [81 x i8], align [filtered] %1 = bitcast [81 x i8]* %__MID0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [81 x i8]* %__MID0 to i8* - %load_l = load i32, i32* %l, align 4 - %load_p = load i32, i32* %p, align 4 + %load_l = load i32, i32* %l, align [filtered] + %load_p = load i32, i32* %p, align [filtered] call void @MID__STRING(i8* %2, i8* getelementptr inbounds ([212 x i8], [212 x i8]* @utf08_literal_0, i32 0, i32 0), i32 %load_l, i32 %load_p) - %deref = load i8*, i8** %main, align 8 + %deref = load i8*, i8** %main, align [filtered] %3 = bitcast [81 x i8]* %__MID0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %deref, i8* align 1 %3, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %deref, i8* align [filtered] %3, i32 80, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_function_call_generates_real_type_call.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_function_call_generates_real_type_call.snap index a98d98700e1..2c558de7d2a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_function_call_generates_real_type_call.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_function_call_generates_real_type_call.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/generics_test.rs expression: prg -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,13 +13,13 @@ target triple = "[filtered]" define i32 @MAX__DINT(i32 %0, i32 %1) { entry: - %MAX__DINT = alloca i32, align 4 - %in1 = alloca i32, align 4 - store i32 %0, i32* %in1, align 4 - %in2 = alloca i32, align 4 - store i32 %1, i32* %in2, align 4 - store i32 0, i32* %MAX__DINT, align 4 - %MAX__DINT_ret = load i32, i32* %MAX__DINT, align 4 + %MAX__DINT = alloca i32, align [filtered] + %in1 = alloca i32, align [filtered] + store i32 %0, i32* %in1, align [filtered] + %in2 = alloca i32, align [filtered] + store i32 %1, i32* %in2, align [filtered] + store i32 0, i32* %MAX__DINT, align [filtered] + %MAX__DINT_ret = load i32, i32* %MAX__DINT, align [filtered] ret i32 %MAX__DINT_ret } @@ -29,8 +28,8 @@ entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %call = call i32 @MAX__DINT(i32 1, i32 2) - %load_a = load i16, i16* %a, align 2 - %load_b = load i16, i16* %b, align 2 + %load_a = load i16, i16* %a, align [filtered] + %load_b = load i16, i16* %b, align [filtered] %call1 = call i16 @MAX__INT(i16 %load_a, i16 %load_b) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_function_with_aggregate_return.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_function_with_aggregate_return.snap index d197ef7cb11..96c79e163e2 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_function_with_aggregate_return.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_function_with_aggregate_return.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/generics_test.rs expression: codegen(src) -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,12 +13,12 @@ declare void @TO_STRING__WSTRING(i8*, i16*) define void @main() { entry: - %__TO_STRING0 = alloca [1025 x i8], align 1 + %__TO_STRING0 = alloca [1025 x i8], align [filtered] %0 = bitcast [1025 x i8]* %__TO_STRING0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([1025 x i8]* getelementptr ([1025 x i8], [1025 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([1025 x i8]* getelementptr ([1025 x i8], [1025 x i8]* null, i32 1) to i64), i1 false) %1 = bitcast [1025 x i8]* %__TO_STRING0 to i8* call void @TO_STRING__WSTRING(i8* %1, i16* getelementptr inbounds ([6 x i16], [6 x i16]* @utf16_literal_0, i32 0, i32 0)) - %load___TO_STRING0 = load [1025 x i8], [1025 x i8]* %__TO_STRING0, align 1 + %load___TO_STRING0 = load [1025 x i8], [1025 x i8]* %__TO_STRING0, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_output_parameter.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_output_parameter.snap index ebf73b64db5..4c8c5c02b16 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_output_parameter.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__generics_test__generic_output_parameter.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/generics_test.rs expression: codegen(src) -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,13 +13,13 @@ target triple = "[filtered]" define i16 @foo__INT(i64 %0, i16* %1) { entry: - %foo__INT = alloca i16, align 2 - %in1 = alloca i64, align 8 - store i64 %0, i64* %in1, align 8 - %out1 = alloca i16*, align 8 - store i16* %1, i16** %out1, align 8 - store i16 0, i16* %foo__INT, align 2 - %foo__INT_ret = load i16, i16* %foo__INT, align 2 + %foo__INT = alloca i16, align [filtered] + %in1 = alloca i64, align [filtered] + store i64 %0, i64* %in1, align [filtered] + %out1 = alloca i16*, align [filtered] + store i16* %1, i16** %out1, align [filtered] + store i16 0, i16* %foo__INT, align [filtered] + %foo__INT_ret = load i16, i16* %foo__INT, align [filtered] ret i16 %foo__INT_ret } @@ -29,8 +28,8 @@ entry: %theInt = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %iResult = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %data = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_data = load i64, i64* %data, align 8 + %load_data = load i64, i64* %data, align [filtered] %call = call i16 @foo__INT(i64 %load_data, i16* %theInt) - store i16 %call, i16* %iResult, align 2 + store i16 %call, i16* %iResult, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__enum_referenced_in_fb_nested.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__enum_referenced_in_fb_nested.snap index 27d6d9e1ea0..57eba87a1fa 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__enum_referenced_in_fb_nested.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__enum_referenced_in_fb_nested.snap @@ -22,8 +22,8 @@ target triple = "[filtered]" define void @fb(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] %x = getelementptr inbounds %fb, %fb* %0, i32 0, i32 0 ret void } @@ -56,8 +56,8 @@ target triple = "[filtered]" define void @fb2(%fb2* %0) { entry: - %this = alloca %fb2*, align 8 - store %fb2* %0, %fb2** %this, align 8 + %this = alloca %fb2*, align [filtered] + store %fb2* %0, %fb2** %this, align [filtered] %x = getelementptr inbounds %fb2, %fb2* %0, i32 0, i32 0 ret void } @@ -75,7 +75,7 @@ target triple = "[filtered]" define void @fb3(%fb3* %0) { entry: - %this = alloca %fb3*, align 8 - store %fb3* %0, %fb3** %this, align 8 + %this = alloca %fb3*, align [filtered] + store %fb3* %0, %fb3** %this, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__function_defined_in_external_file.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__function_defined_in_external_file.snap index 4cceb85d294..86b9d526ca2 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__function_defined_in_external_file.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__function_defined_in_external_file.snap @@ -9,9 +9,9 @@ target triple = "[filtered]" define i32 @func() { entry: - %func = alloca i32, align 4 - store i32 0, i32* %func, align 4 - %func_ret = load i32, i32* %func, align 4 + %func = alloca i32, align [filtered] + store i32 0, i32* %func, align [filtered] + %func_ret = load i32, i32* %func, align [filtered] ret i32 %func_ret } @@ -26,8 +26,8 @@ target triple = "[filtered]" define void @fb(%fb* %0) { entry: - %this = alloca %fb*, align 8 - store %fb* %0, %fb** %this, align 8 + %this = alloca %fb*, align [filtered] + store %fb* %0, %fb** %this, align [filtered] ret void } @@ -79,7 +79,7 @@ target triple = "[filtered]" define void @prog(%prog* %0) { entry: %myFb = getelementptr inbounds %prog, %prog* %0, i32 0, i32 0 - %load_a = load i32, i32* getelementptr inbounds (%prg.5, %prg.5* @prg_instance, i32 0, i32 0), align 4 + %load_a = load i32, i32* getelementptr inbounds (%prg.5, %prg.5* @prg_instance, i32 0, i32 0), align [filtered] call void @prg2(%prg2.6* @prg2_instance) %call = call i32 @func() call void @fb(%fb.4* %myFb) diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__global_value_from_different_file.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__global_value_from_different_file.snap index 283683de58b..167fd899371 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__global_value_from_different_file.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__multifile_codegen_tests__global_value_from_different_file.snap @@ -34,6 +34,6 @@ target triple = "[filtered]" define void @prog(%prog* %0) { entry: - store i32 7, i32* @x, align 4 + store i32 7, i32* @x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__fb_accepts_empty_statement_as_input_param.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__fb_accepts_empty_statement_as_input_param.snap index 99a636d2243..c8765dbcc77 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__fb_accepts_empty_statement_as_input_param.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__fb_accepts_empty_statement_as_input_param.snap @@ -15,8 +15,8 @@ target triple = "[filtered]" define void @fb_t(%fb_t* %0) { entry: - %this = alloca %fb_t*, align 8 - store %fb_t* %0, %fb_t** %this, align 8 + %this = alloca %fb_t*, align [filtered] + store %fb_t* %0, %fb_t** %this, align [filtered] %in1 = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 0 %in2 = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 1 ret void @@ -26,7 +26,7 @@ define void @main(%main* %0) { entry: %fb = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %1 = getelementptr inbounds %fb_t, %fb_t* %fb, i32 0, i32 0 - store i32 1, i32* %1, align 4 + store i32 1, i32* %1, align [filtered] call void @fb_t(%fb_t* %fb) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__fb_accepts_empty_statement_as_output_param.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__fb_accepts_empty_statement_as_output_param.snap index d45989586b9..c8173acfd1d 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__fb_accepts_empty_statement_as_output_param.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__fb_accepts_empty_statement_as_output_param.snap @@ -15,8 +15,8 @@ target triple = "[filtered]" define void @fb_t(%fb_t* %0) { entry: - %this = alloca %fb_t*, align 8 - store %fb_t* %0, %fb_t** %this, align 8 + %this = alloca %fb_t*, align [filtered] + store %fb_t* %0, %fb_t** %this, align [filtered] %out1 = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 0 %out2 = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 1 ret void @@ -28,7 +28,7 @@ entry: %x = getelementptr inbounds %main, %main* %0, i32 0, i32 1 call void @fb_t(%fb_t* %fb) %1 = getelementptr inbounds %fb_t, %fb_t* %fb, i32 0, i32 0 - %2 = load i32, i32* %1, align 4 - store i32 %2, i32* %x, align 4 + %2 = load i32, i32* %1, align [filtered] + store i32 %2, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_accepts_empty_statement_as_input_param.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_accepts_empty_statement_as_input_param.snap index 996c6c21621..7bd00e06d64 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_accepts_empty_statement_as_input_param.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_accepts_empty_statement_as_input_param.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,17 +13,17 @@ target triple = "[filtered]" define void @foo(i32 %0, i32 %1) { entry: - %in1 = alloca i32, align 4 - store i32 %0, i32* %in1, align 4 - %in2 = alloca i32, align 4 - store i32 %1, i32* %in2, align 4 + %in1 = alloca i32, align [filtered] + store i32 %0, i32* %in1, align [filtered] + %in2 = alloca i32, align [filtered] + store i32 %1, i32* %in2, align [filtered] ret void } define void @main(%main* %0) { entry: - %1 = alloca i32, align 4 - %2 = load i32, i32* %1, align 4 + %1 = alloca i32, align [filtered] + %2 = load i32, i32* %1, align [filtered] call void @foo(i32 1, i32 %2) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_accepts_empty_statement_as_output_param.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_accepts_empty_statement_as_output_param.snap index 2050373d0b1..8a3f7b7e904 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_accepts_empty_statement_as_output_param.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_accepts_empty_statement_as_output_param.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,17 +13,17 @@ target triple = "[filtered]" define void @foo(i32* %0, i32* %1) { entry: - %out1 = alloca i32*, align 8 - store i32* %0, i32** %out1, align 8 - %out2 = alloca i32*, align 8 - store i32* %1, i32** %out2, align 8 + %out1 = alloca i32*, align [filtered] + store i32* %0, i32** %out1, align [filtered] + %out2 = alloca i32*, align [filtered] + store i32* %1, i32** %out2, align [filtered] ret void } define void @main(%main* %0) { entry: %x = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - %1 = alloca i32, align 4 + %1 = alloca i32, align [filtered] call void @foo(i32* %x, i32* %1) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_all_parameters_assigned.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_all_parameters_assigned.snap index 21551b4f2d0..c76895b8bae 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_all_parameters_assigned.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_all_parameters_assigned.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,15 +13,15 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i32* %1, i32* %2) { entry: - %foo = alloca i32, align 4 - %input1 = alloca i32, align 4 - store i32 %0, i32* %input1, align 4 - %output1 = alloca i32*, align 8 - store i32* %1, i32** %output1, align 8 - %inout1 = alloca i32*, align 8 - store i32* %2, i32** %inout1, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %input1 = alloca i32, align [filtered] + store i32 %0, i32* %input1, align [filtered] + %output1 = alloca i32*, align [filtered] + store i32* %1, i32** %output1, align [filtered] + %inout1 = alloca i32*, align [filtered] + store i32* %2, i32** %inout1, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -31,11 +30,11 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_var1 = load i32, i32* %var1, align 4 + %load_var1 = load i32, i32* %var1, align [filtered] %call = call i32 @foo(i32 %load_var1, i32* %var2, i32* %var3) - %load_var11 = load i32, i32* %var1, align 4 + %load_var11 = load i32, i32* %var1, align [filtered] %call2 = call i32 @foo(i32 %load_var11, i32* %var2, i32* %var3) - %load_var13 = load i32, i32* %var1, align 4 + %load_var13 = load i32, i32* %var1, align [filtered] %call4 = call i32 @foo(i32 %load_var13, i32* %var2, i32* %var3) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_default_value_parameter_type.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_default_value_parameter_type.snap index e2a53ca6702..619f245d5f6 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_default_value_parameter_type.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_default_value_parameter_type.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,17 +13,17 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i32* %1, i32* %2, i32* %3) { entry: - %foo = alloca i32, align 4 - %input1 = alloca i32, align 4 - store i32 %0, i32* %input1, align 4 - %output1 = alloca i32*, align 8 - store i32* %1, i32** %output1, align 8 - %output2 = alloca i32*, align 8 - store i32* %2, i32** %output2, align 8 - %inout1 = alloca i32*, align 8 - store i32* %3, i32** %inout1, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %input1 = alloca i32, align [filtered] + store i32 %0, i32* %input1, align [filtered] + %output1 = alloca i32*, align [filtered] + store i32* %1, i32** %output1, align [filtered] + %output2 = alloca i32*, align [filtered] + store i32* %2, i32** %output2, align [filtered] + %inout1 = alloca i32*, align [filtered] + store i32* %3, i32** %inout1, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -33,10 +32,10 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %1 = alloca i32, align 4 - store i32 20, i32* %1, align 4 - %2 = alloca i32, align 4 - store i32 20, i32* %2, align 4 + %1 = alloca i32, align [filtered] + store i32 20, i32* %1, align [filtered] + %2 = alloca i32, align [filtered] + store i32 20, i32* %2, align [filtered] %call = call i32 @foo(i32 20, i32* %2, i32* %1, i32* %var3) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_inout_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_inout_assignment.snap index 44be2ae9907..e9d394a5805 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_inout_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_inout_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,15 +13,15 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i32* %1, i32* %2) { entry: - %foo = alloca i32, align 4 - %input1 = alloca i32, align 4 - store i32 %0, i32* %input1, align 4 - %output1 = alloca i32*, align 8 - store i32* %1, i32** %output1, align 8 - %inout1 = alloca i32*, align 8 - store i32* %2, i32** %inout1, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %input1 = alloca i32, align [filtered] + store i32 %0, i32* %input1, align [filtered] + %output1 = alloca i32*, align [filtered] + store i32* %1, i32** %output1, align [filtered] + %inout1 = alloca i32*, align [filtered] + store i32* %2, i32** %inout1, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -31,8 +30,8 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_var1 = load i32, i32* %var1, align 4 - %1 = alloca i32, align 4 + %load_var1 = load i32, i32* %var1, align [filtered] + %1 = alloca i32, align [filtered] %call = call i32 @foo(i32 %load_var1, i32* %var2, i32* %1) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_input_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_input_assignment.snap index 6d0ed49d4b0..daefcf21804 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_input_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_input_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,15 +13,15 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i32* %1, i32* %2) { entry: - %foo = alloca i32, align 4 - %input1 = alloca i32, align 4 - store i32 %0, i32* %input1, align 4 - %output1 = alloca i32*, align 8 - store i32* %1, i32** %output1, align 8 - %inout1 = alloca i32*, align 8 - store i32* %2, i32** %inout1, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %input1 = alloca i32, align [filtered] + store i32 %0, i32* %input1, align [filtered] + %output1 = alloca i32*, align [filtered] + store i32* %1, i32** %output1, align [filtered] + %inout1 = alloca i32*, align [filtered] + store i32* %2, i32** %inout1, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -31,8 +30,8 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %1 = alloca i32, align 4 - %2 = load i32, i32* %1, align 4 + %1 = alloca i32, align [filtered] + %2 = load i32, i32* %1, align [filtered] %call = call i32 @foo(i32 %2, i32* %var2, i32* %var3) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_output_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_output_assignment.snap index 7d28ee1b658..e5e8ad67675 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_output_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_output_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,15 +13,15 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i32* %1, i32* %2) { entry: - %foo = alloca i32, align 4 - %input1 = alloca i32, align 4 - store i32 %0, i32* %input1, align 4 - %output1 = alloca i32*, align 8 - store i32* %1, i32** %output1, align 8 - %inout1 = alloca i32*, align 8 - store i32* %2, i32** %inout1, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %input1 = alloca i32, align [filtered] + store i32 %0, i32* %input1, align [filtered] + %output1 = alloca i32*, align [filtered] + store i32* %1, i32** %output1, align [filtered] + %inout1 = alloca i32*, align [filtered] + store i32* %2, i32** %inout1, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -31,8 +30,8 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_var1 = load i32, i32* %var1, align 4 - %1 = alloca i32, align 4 + %load_var1 = load i32, i32* %var1, align [filtered] + %1 = alloca i32, align [filtered] %call = call i32 @foo(i32 %load_var1, i32* %1, i32* %var3) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_output_default_value_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_output_default_value_assignment.snap index d708f1bac86..579a7bc8c34 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_output_default_value_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_empty_output_default_value_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,15 +13,15 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i32* %1, i32* %2) { entry: - %foo = alloca i32, align 4 - %input1 = alloca i32, align 4 - store i32 %0, i32* %input1, align 4 - %output1 = alloca i32*, align 8 - store i32* %1, i32** %output1, align 8 - %inout1 = alloca i32*, align 8 - store i32* %2, i32** %inout1, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %input1 = alloca i32, align [filtered] + store i32 %0, i32* %input1, align [filtered] + %output1 = alloca i32*, align [filtered] + store i32* %1, i32** %output1, align [filtered] + %inout1 = alloca i32*, align [filtered] + store i32* %2, i32** %inout1, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -31,9 +30,9 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_var1 = load i32, i32* %var1, align 4 - %1 = alloca i32, align 4 - store i32 3, i32* %1, align 4 + %load_var1 = load i32, i32* %var1, align [filtered] + %1 = alloca i32, align [filtered] + store i32 3, i32* %1, align [filtered] %call = call i32 @foo(i32 %load_var1, i32* %1, i32* %var3) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_inout_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_inout_assignment.snap index 44be2ae9907..e9d394a5805 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_inout_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_inout_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,15 +13,15 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i32* %1, i32* %2) { entry: - %foo = alloca i32, align 4 - %input1 = alloca i32, align 4 - store i32 %0, i32* %input1, align 4 - %output1 = alloca i32*, align 8 - store i32* %1, i32** %output1, align 8 - %inout1 = alloca i32*, align 8 - store i32* %2, i32** %inout1, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %input1 = alloca i32, align [filtered] + store i32 %0, i32* %input1, align [filtered] + %output1 = alloca i32*, align [filtered] + store i32* %1, i32** %output1, align [filtered] + %inout1 = alloca i32*, align [filtered] + store i32* %2, i32** %inout1, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -31,8 +30,8 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_var1 = load i32, i32* %var1, align 4 - %1 = alloca i32, align 4 + %load_var1 = load i32, i32* %var1, align [filtered] + %1 = alloca i32, align [filtered] %call = call i32 @foo(i32 %load_var1, i32* %var2, i32* %1) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_input_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_input_assignment.snap index 6d0ed49d4b0..daefcf21804 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_input_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_input_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,15 +13,15 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i32* %1, i32* %2) { entry: - %foo = alloca i32, align 4 - %input1 = alloca i32, align 4 - store i32 %0, i32* %input1, align 4 - %output1 = alloca i32*, align 8 - store i32* %1, i32** %output1, align 8 - %inout1 = alloca i32*, align 8 - store i32* %2, i32** %inout1, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %input1 = alloca i32, align [filtered] + store i32 %0, i32* %input1, align [filtered] + %output1 = alloca i32*, align [filtered] + store i32* %1, i32** %output1, align [filtered] + %inout1 = alloca i32*, align [filtered] + store i32* %2, i32** %inout1, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -31,8 +30,8 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %1 = alloca i32, align 4 - %2 = load i32, i32* %1, align 4 + %1 = alloca i32, align [filtered] + %2 = load i32, i32* %1, align [filtered] %call = call i32 @foo(i32 %2, i32* %var2, i32* %var3) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_input_default_value_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_input_default_value_assignment.snap index e9d3e257f28..a2821c59e47 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_input_default_value_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_input_default_value_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,15 +13,15 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i32* %1, i32* %2) { entry: - %foo = alloca i32, align 4 - %input1 = alloca i32, align 4 - store i32 %0, i32* %input1, align 4 - %output1 = alloca i32*, align 8 - store i32* %1, i32** %output1, align 8 - %inout1 = alloca i32*, align 8 - store i32* %2, i32** %inout1, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %input1 = alloca i32, align [filtered] + store i32 %0, i32* %input1, align [filtered] + %output1 = alloca i32*, align [filtered] + store i32* %1, i32** %output1, align [filtered] + %inout1 = alloca i32*, align [filtered] + store i32* %2, i32** %inout1, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_output_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_output_assignment.snap index 7d28ee1b658..e5e8ad67675 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_output_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_output_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,15 +13,15 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i32* %1, i32* %2) { entry: - %foo = alloca i32, align 4 - %input1 = alloca i32, align 4 - store i32 %0, i32* %input1, align 4 - %output1 = alloca i32*, align 8 - store i32* %1, i32** %output1, align 8 - %inout1 = alloca i32*, align 8 - store i32* %2, i32** %inout1, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %input1 = alloca i32, align [filtered] + store i32 %0, i32* %input1, align [filtered] + %output1 = alloca i32*, align [filtered] + store i32* %1, i32** %output1, align [filtered] + %inout1 = alloca i32*, align [filtered] + store i32* %2, i32** %inout1, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -31,8 +30,8 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_var1 = load i32, i32* %var1, align 4 - %1 = alloca i32, align 4 + %load_var1 = load i32, i32* %var1, align [filtered] + %1 = alloca i32, align [filtered] %call = call i32 @foo(i32 %load_var1, i32* %1, i32* %var3) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_output_default_value_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_output_default_value_assignment.snap index d708f1bac86..579a7bc8c34 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_output_default_value_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__function_missing_output_default_value_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,15 +13,15 @@ target triple = "[filtered]" define i32 @foo(i32 %0, i32* %1, i32* %2) { entry: - %foo = alloca i32, align 4 - %input1 = alloca i32, align 4 - store i32 %0, i32* %input1, align 4 - %output1 = alloca i32*, align 8 - store i32* %1, i32** %output1, align 8 - %inout1 = alloca i32*, align 8 - store i32* %2, i32** %inout1, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %input1 = alloca i32, align [filtered] + store i32 %0, i32* %input1, align [filtered] + %output1 = alloca i32*, align [filtered] + store i32* %1, i32** %output1, align [filtered] + %inout1 = alloca i32*, align [filtered] + store i32* %2, i32** %inout1, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -31,9 +30,9 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_var1 = load i32, i32* %var1, align 4 - %1 = alloca i32, align 4 - store i32 3, i32* %1, align 4 + %load_var1 = load i32, i32* %var1, align [filtered] + %1 = alloca i32, align [filtered] + store i32 3, i32* %1, align [filtered] %call = call i32 @foo(i32 %load_var1, i32* %1, i32* %var3) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__parameters_behind_function_block_pointer_are_assigned_to.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__parameters_behind_function_block_pointer_are_assigned_to.snap index 51152f767a5..bb1f05fc7e3 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__parameters_behind_function_block_pointer_are_assigned_to.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__parameters_behind_function_block_pointer_are_assigned_to.snap @@ -17,18 +17,18 @@ define void @main(%main* %0) { entry: %file = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %FileOpen = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - store %file_t* %file, %file_t** %FileOpen, align 8 - %deref = load %file_t*, %file_t** %FileOpen, align 8 + store %file_t* %file, %file_t** %FileOpen, align [filtered] + %deref = load %file_t*, %file_t** %FileOpen, align [filtered] %1 = getelementptr inbounds %file_t, %file_t* %deref, i32 0, i32 1 - store i8 1, i8* %1, align 1 + store i8 1, i8* %1, align [filtered] call void @file_t(%file_t* %deref) ret void } define void @file_t(%file_t* %0) { entry: - %this = alloca %file_t*, align 8 - store %file_t* %0, %file_t** %this, align 8 + %this = alloca %file_t*, align [filtered] + store %file_t* %0, %file_t** %this, align [filtered] %var1 = getelementptr inbounds %file_t, %file_t* %0, i32 0, i32 0 %var2 = getelementptr inbounds %file_t, %file_t* %0, i32 0, i32 1 ret void diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_accepts_empty_statement_as_input_param.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_accepts_empty_statement_as_input_param.snap index b5aa9e86e2d..7a8331bba5a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_accepts_empty_statement_as_input_param.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_accepts_empty_statement_as_input_param.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -23,7 +22,7 @@ entry: define void @main(%main* %0) { entry: - store i32 1, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align 4 + store i32 1, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align [filtered] call void @prog(%prog* @prog_instance) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_accepts_empty_statement_as_output_param.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_accepts_empty_statement_as_output_param.snap index bb95e0d9c9b..9b7c94306a8 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_accepts_empty_statement_as_output_param.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_accepts_empty_statement_as_output_param.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,8 +17,8 @@ define void @prog(%prog* %0) { entry: %out1 = getelementptr inbounds %prog, %prog* %0, i32 0, i32 0 %out2 = getelementptr inbounds %prog, %prog* %0, i32 0, i32 1 - store i32 1, i32* %out1, align 4 - store i32 2, i32* %out2, align 4 + store i32 1, i32* %out1, align [filtered] + store i32 2, i32* %out2, align [filtered] ret void } @@ -27,7 +26,7 @@ define void @main(%main* %0) { entry: %x = getelementptr inbounds %main, %main* %0, i32 0, i32 0 call void @prog(%prog* @prog_instance) - %1 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align 4 - store i32 %1, i32* %x, align 4 + %1 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align [filtered] + store i32 %1, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_all_parameters_assigned_explicit.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_all_parameters_assigned_explicit.snap index b8f45d9250d..9e0754db194 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_all_parameters_assigned_explicit.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_all_parameters_assigned_explicit.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -27,17 +26,17 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_var1 = load i32, i32* %var1, align 4 - store i32 %load_var1, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align 4 - store i32* %var3, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align 8 + %load_var1 = load i32, i32* %var1, align [filtered] + store i32 %load_var1, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align [filtered] + store i32* %var3, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align [filtered] call void @prog(%prog* @prog_instance) - %1 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align 4 - store i32 %1, i32* %var2, align 4 - store i32* %var3, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align 8 - %load_var11 = load i32, i32* %var1, align 4 - store i32 %load_var11, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align 4 + %1 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align [filtered] + store i32 %1, i32* %var2, align [filtered] + store i32* %var3, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align [filtered] + %load_var11 = load i32, i32* %var1, align [filtered] + store i32 %load_var11, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align [filtered] call void @prog(%prog* @prog_instance) - %2 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align 4 - store i32 %2, i32* %var2, align 4 + %2 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align [filtered] + store i32 %2, i32* %var2, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_all_parameters_assigned_implicit.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_all_parameters_assigned_implicit.snap index 563aabc17e4..3f7ff1f65ba 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_all_parameters_assigned_implicit.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_all_parameters_assigned_implicit.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -27,11 +26,11 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_var1 = load i32, i32* %var1, align 4 - store i32 %load_var1, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align 4 - store i32* %var3, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align 8 + %load_var1 = load i32, i32* %var1, align [filtered] + store i32 %load_var1, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align [filtered] + store i32* %var3, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align [filtered] call void @prog(%prog* @prog_instance) - %1 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align 4 - store i32 %1, i32* %var2, align 4 + %1 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align [filtered] + store i32 %1, i32* %var2, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_empty_inout_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_empty_inout_assignment.snap index 69741f706ad..1acb3e19991 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_empty_inout_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_empty_inout_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -27,12 +26,12 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_var1 = load i32, i32* %var1, align 4 - store i32 %load_var1, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align 4 - %empty_varinout = alloca i32, align 4 - store i32* %empty_varinout, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align 8 + %load_var1 = load i32, i32* %var1, align [filtered] + store i32 %load_var1, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align [filtered] + %empty_varinout = alloca i32, align [filtered] + store i32* %empty_varinout, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align [filtered] call void @prog(%prog* @prog_instance) - %1 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align 4 - store i32 %1, i32* %var2, align 4 + %1 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align [filtered] + store i32 %1, i32* %var2, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_missing_input_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_missing_input_assignment.snap index 0382383b7d8..4c698a51501 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_missing_input_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_missing_input_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -27,9 +26,9 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - store i32* %var3, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align 8 + store i32* %var3, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align [filtered] call void @prog(%prog* @prog_instance) - %1 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align 4 - store i32 %1, i32* %var2, align 4 + %1 = load i32, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1), align [filtered] + store i32 %1, i32* %var2, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_missing_output_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_missing_output_assignment.snap index 6993817fdb1..ccc6591462b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_missing_output_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__program_missing_output_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/parameters_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -27,9 +26,9 @@ entry: %var1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %var2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %var3 = getelementptr inbounds %main, %main* %0, i32 0, i32 2 - %load_var1 = load i32, i32* %var1, align 4 - store i32 %load_var1, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align 4 - store i32* %var3, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align 8 + %load_var1 = load i32, i32* %var1, align [filtered] + store i32 %load_var1, i32* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0), align [filtered] + store i32* %var3, i32** getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 2), align [filtered] call void @prog(%prog* @prog_instance) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__var_in_out_params_can_be_out_of_order.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__var_in_out_params_can_be_out_of_order.snap index 7bbe91b29ab..53e107af551 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__var_in_out_params_can_be_out_of_order.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__parameters_tests__var_in_out_params_can_be_out_of_order.snap @@ -19,28 +19,28 @@ entry: %out1 = getelementptr inbounds %mainProg, %mainProg* %0, i32 0, i32 1 %out2 = getelementptr inbounds %mainProg, %mainProg* %0, i32 0, i32 2 %1 = getelementptr inbounds %fb_t, %fb_t* %fb, i32 0, i32 4 - store i8* %out1, i8** %1, align 8 + store i8* %out1, i8** %1, align [filtered] %2 = getelementptr inbounds %fb_t, %fb_t* %fb, i32 0, i32 2 - store i8* %out2, i8** %2, align 8 + store i8* %out2, i8** %2, align [filtered] call void @fb_t(%fb_t* %fb) %3 = getelementptr inbounds %fb_t, %fb_t* %fb, i32 0, i32 2 - store i8* %out1, i8** %3, align 8 + store i8* %out1, i8** %3, align [filtered] %4 = getelementptr inbounds %fb_t, %fb_t* %fb, i32 0, i32 4 - store i8* %out2, i8** %4, align 8 + store i8* %out2, i8** %4, align [filtered] call void @fb_t(%fb_t* %fb) - %load_out2 = load i8, i8* %out2, align 1 - %load_out1 = load i8, i8* %out1, align 1 + %load_out2 = load i8, i8* %out2, align [filtered] + %load_out1 = load i8, i8* %out1, align [filtered] call void @fb_t__foo(%fb_t* %fb) - %load_out21 = load i8, i8* %out2, align 1 - %load_out12 = load i8, i8* %out1, align 1 + %load_out21 = load i8, i8* %out2, align [filtered] + %load_out12 = load i8, i8* %out1, align [filtered] call void @fb_t__foo(%fb_t* %fb) ret void } define void @fb_t(%fb_t* %0) { entry: - %this = alloca %fb_t*, align 8 - store %fb_t* %0, %fb_t** %this, align 8 + %this = alloca %fb_t*, align [filtered] + store %fb_t* %0, %fb_t** %this, align [filtered] %myVar = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 0 %myInput = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 1 %myInOut = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 2 @@ -51,16 +51,16 @@ entry: define void @fb_t__foo(%fb_t* %0) { entry: - %this = alloca %fb_t*, align 8 - store %fb_t* %0, %fb_t** %this, align 8 + %this = alloca %fb_t*, align [filtered] + store %fb_t* %0, %fb_t** %this, align [filtered] %myVar = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 0 %myInput = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 1 %myInOut = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 2 %myOut = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 3 %myOtherInOut = getelementptr inbounds %fb_t, %fb_t* %0, i32 0, i32 4 - %deref = load i8*, i8** %myInOut, align 8 - %deref1 = load i8*, i8** %myOtherInOut, align 8 - %load_myOtherInOut = load i8, i8* %deref1, align 1 - store i8 %load_myOtherInOut, i8* %deref, align 1 + %deref = load i8*, i8** %myInOut, align [filtered] + %deref1 = load i8*, i8** %myOtherInOut, align [filtered] + %load_myOtherInOut = load i8, i8* %deref1, align [filtered] + store i8 %load_myOtherInOut, i8* %deref, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__bitaccess_generated_as_rsh_and_trunc_i1.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__bitaccess_generated_as_rsh_and_trunc_i1.snap index a1721ecb4d6..73111753990 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__bitaccess_generated_as_rsh_and_trunc_i1.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__bitaccess_generated_as_rsh_and_trunc_i1.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/statement_codegen_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,15 +16,15 @@ entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %shift = lshr i32 %load_x, 2 %1 = trunc i32 %shift to i8 %2 = and i8 %1, 1 - store i8 %2, i8* %a, align 1 - %load_y = load i32, i32* %y, align 4 + store i8 %2, i8* %a, align [filtered] + %load_y = load i32, i32* %y, align [filtered] %shift1 = ashr i32 %load_y, 4 %3 = trunc i32 %shift1 to i8 %4 = and i8 %3, 1 - store i8 %4, i8* %a, align 1 + store i8 %4, i8* %a, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__byteaccess_generated_as_rsh_and_trunc_i8.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__byteaccess_generated_as_rsh_and_trunc_i8.snap index 8d8d7b33e71..7cf7d12bfed 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__byteaccess_generated_as_rsh_and_trunc_i8.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__byteaccess_generated_as_rsh_and_trunc_i8.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/statement_codegen_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,17 +16,17 @@ entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %shift = lshr i32 %load_x, 0 %1 = trunc i32 %shift to i8 - store i8 %1, i8* %a, align 1 - %load_x1 = load i32, i32* %x, align 4 + store i8 %1, i8* %a, align [filtered] + %load_x1 = load i32, i32* %x, align [filtered] %shift2 = lshr i32 %load_x1, 8 %2 = trunc i32 %shift2 to i8 - store i8 %2, i8* %a, align 1 - %load_y = load i32, i32* %y, align 4 + store i8 %2, i8* %a, align [filtered] + %load_y = load i32, i32* %y, align [filtered] %shift3 = ashr i32 %load_y, 24 %3 = trunc i32 %shift3 to i8 - store i8 %3, i8* %a, align 1 + store i8 %3, i8* %a, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__dwordaccess_generated_as_rsh_and_trunc_i32.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__dwordaccess_generated_as_rsh_and_trunc_i32.snap index 41d653b2215..ea9708792c9 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__dwordaccess_generated_as_rsh_and_trunc_i32.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__dwordaccess_generated_as_rsh_and_trunc_i32.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/statement_codegen_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,17 +16,17 @@ entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_x = load i64, i64* %x, align 8 + %load_x = load i64, i64* %x, align [filtered] %shift = lshr i64 %load_x, 0 %1 = trunc i64 %shift to i32 - store i32 %1, i32* %a, align 4 - %load_x1 = load i64, i64* %x, align 8 + store i32 %1, i32* %a, align [filtered] + %load_x1 = load i64, i64* %x, align [filtered] %shift2 = lshr i64 %load_x1, 32 %2 = trunc i64 %shift2 to i32 - store i32 %2, i32* %a, align 4 - %load_y = load i64, i64* %y, align 8 + store i32 %2, i32* %a, align [filtered] + %load_y = load i64, i64* %y, align [filtered] %shift3 = ashr i64 %load_y, 32 %3 = trunc i64 %shift3 to i32 - store i32 %3, i32* %a, align 4 + store i32 %3, i32* %a, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__floating_point_type_casting.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__floating_point_type_casting.snap index 6cd27b62478..7084bff3001 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__floating_point_type_casting.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__floating_point_type_casting.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/statement_codegen_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -10,26 +9,26 @@ target triple = "[filtered]" define i32 @fn() { entry: - %fn = alloca i32, align 4 - %a = alloca float, align 4 - %b = alloca float, align 4 - %c = alloca float, align 4 - %d = alloca double, align 8 - %e = alloca double, align 8 - %f = alloca double, align 8 - store float 3.000000e+00, float* %a, align 4 - store float 3.500000e+00, float* %b, align 4 - store float 3.500000e+00, float* %c, align 4 - store double 3.000000e+00, double* %d, align 8 - store double 3.500000e+00, double* %e, align 8 - store double 3.500000e+00, double* %f, align 8 - store i32 0, i32* %fn, align 4 - store float 3.000000e+00, float* %a, align 4 - store float 3.500000e+00, float* %b, align 4 - store float 3.500000e+00, float* %c, align 4 - store double 3.000000e+00, double* %d, align 8 - store double 3.500000e+00, double* %e, align 8 - store double 3.500000e+00, double* %f, align 8 - %fn_ret = load i32, i32* %fn, align 4 + %fn = alloca i32, align [filtered] + %a = alloca float, align [filtered] + %b = alloca float, align [filtered] + %c = alloca float, align [filtered] + %d = alloca double, align [filtered] + %e = alloca double, align [filtered] + %f = alloca double, align [filtered] + store float 3.000000e+00, float* %a, align [filtered] + store float 3.500000e+00, float* %b, align [filtered] + store float 3.500000e+00, float* %c, align [filtered] + store double 3.000000e+00, double* %d, align [filtered] + store double 3.500000e+00, double* %e, align [filtered] + store double 3.500000e+00, double* %f, align [filtered] + store i32 0, i32* %fn, align [filtered] + store float 3.000000e+00, float* %a, align [filtered] + store float 3.500000e+00, float* %b, align [filtered] + store float 3.500000e+00, float* %c, align [filtered] + store double 3.000000e+00, double* %d, align [filtered] + store double 3.500000e+00, double* %e, align [filtered] + store double 3.500000e+00, double* %f, align [filtered] + %fn_ret = load i32, i32* %fn, align [filtered] ret i32 %fn_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__function_result_assignment_on_aliased_string.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__function_result_assignment_on_aliased_string.snap index b09d8adf8c3..10f085d50fe 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__function_result_assignment_on_aliased_string.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__function_result_assignment_on_aliased_string.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/statement_codegen_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -12,27 +11,27 @@ declare void @CONCAT(i8*, i8*, i8*) define i8 @LIST_ADD(i8* %0, i8* %1) { entry: - %LIST_ADD = alloca i8, align 1 - %INS = alloca [1001 x i8], align 1 + %LIST_ADD = alloca i8, align [filtered] + %INS = alloca [1001 x i8], align [filtered] %bitcast = bitcast [1001 x i8]* %INS to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1001, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1000, i1 false) - %sx = alloca [2 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1001, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1000, i1 false) + %sx = alloca [2 x i8], align [filtered] %bitcast1 = bitcast [2 x i8]* %sx to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 2, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1, i1 false) - store i8 0, i8* %LIST_ADD, align 1 - %__CONCAT0 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 2, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1, i1 false) + store i8 0, i8* %LIST_ADD, align [filtered] + %__CONCAT0 = alloca [1025 x i8], align [filtered] %2 = bitcast [1025 x i8]* %__CONCAT0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %2, i8 0, i64 ptrtoint ([1025 x i8]* getelementptr ([1025 x i8], [1025 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %2, i8 0, i64 ptrtoint ([1025 x i8]* getelementptr ([1025 x i8], [1025 x i8]* null, i32 1) to i64), i1 false) %3 = bitcast [1025 x i8]* %__CONCAT0 to i8* %4 = bitcast [2 x i8]* %sx to i8* %5 = bitcast [1001 x i8]* %INS to i8* call void @CONCAT(i8* %3, i8* %4, i8* %5) %6 = bitcast [1001 x i8]* %INS to i8* %7 = bitcast [1025 x i8]* %__CONCAT0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %6, i8* align 1 %7, i32 1000, i1 false) - %LIST_ADD_ret = load i8, i8* %LIST_ADD, align 1 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %6, i8* align [filtered] %7, i32 1000, i1 false) + %LIST_ADD_ret = load i8, i8* %LIST_ADD, align [filtered] ret i8 %LIST_ADD_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__function_result_assignment_on_string.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__function_result_assignment_on_string.snap index b09d8adf8c3..10f085d50fe 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__function_result_assignment_on_string.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__function_result_assignment_on_string.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/statement_codegen_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -12,27 +11,27 @@ declare void @CONCAT(i8*, i8*, i8*) define i8 @LIST_ADD(i8* %0, i8* %1) { entry: - %LIST_ADD = alloca i8, align 1 - %INS = alloca [1001 x i8], align 1 + %LIST_ADD = alloca i8, align [filtered] + %INS = alloca [1001 x i8], align [filtered] %bitcast = bitcast [1001 x i8]* %INS to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1001, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1000, i1 false) - %sx = alloca [2 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1001, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1000, i1 false) + %sx = alloca [2 x i8], align [filtered] %bitcast1 = bitcast [2 x i8]* %sx to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 2, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1, i1 false) - store i8 0, i8* %LIST_ADD, align 1 - %__CONCAT0 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 2, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1, i1 false) + store i8 0, i8* %LIST_ADD, align [filtered] + %__CONCAT0 = alloca [1025 x i8], align [filtered] %2 = bitcast [1025 x i8]* %__CONCAT0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %2, i8 0, i64 ptrtoint ([1025 x i8]* getelementptr ([1025 x i8], [1025 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %2, i8 0, i64 ptrtoint ([1025 x i8]* getelementptr ([1025 x i8], [1025 x i8]* null, i32 1) to i64), i1 false) %3 = bitcast [1025 x i8]* %__CONCAT0 to i8* %4 = bitcast [2 x i8]* %sx to i8* %5 = bitcast [1001 x i8]* %INS to i8* call void @CONCAT(i8* %3, i8* %4, i8* %5) %6 = bitcast [1001 x i8]* %INS to i8* %7 = bitcast [1025 x i8]* %__CONCAT0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %6, i8* align 1 %7, i32 1000, i1 false) - %LIST_ADD_ret = load i8, i8* %LIST_ADD, align 1 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %6, i8* align [filtered] %7, i32 1000, i1 false) + %LIST_ADD_ret = load i8, i8* %LIST_ADD, align [filtered] ret i8 %LIST_ADD_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__nested_bitwise_access.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__nested_bitwise_access.snap index 17cd18851d4..11c001017b8 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__nested_bitwise_access.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__nested_bitwise_access.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/statement_codegen_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,7 +15,7 @@ define void @prg(%prg* %0) { entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i64, i64* %x, align 8 + %load_x = load i64, i64* %x, align [filtered] %shift = lshr i64 %load_x, 32 %1 = trunc i64 %shift to i32 %shift1 = lshr i32 %1, 16 @@ -25,6 +24,6 @@ entry: %3 = trunc i16 %shift2 to i8 %shift3 = lshr i8 %3, 1 %4 = and i8 %shift3, 1 - store i8 %4, i8* %a, align 1 + store i8 %4, i8* %a, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__variable_based_bitwise_access.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__variable_based_bitwise_access.snap index 67d8d31730f..6a41867d5ce 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__variable_based_bitwise_access.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__variable_based_bitwise_access.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/statement_codegen_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,17 +17,17 @@ entry: %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 3 - %load_x = load i16, i16* %x, align 2 - %load_y = load i16, i16* %y, align 2 + %load_x = load i16, i16* %x, align [filtered] + %load_y = load i16, i16* %y, align [filtered] %shift = ashr i16 %load_x, %load_y %1 = trunc i16 %shift to i8 %2 = and i8 %1, 1 - store i8 %2, i8* %a, align 1 - %load_x1 = load i16, i16* %x, align 2 - %load_y2 = load i16, i16* %y, align 2 + store i8 %2, i8* %a, align [filtered] + %load_x1 = load i16, i16* %x, align [filtered] + %load_y2 = load i16, i16* %y, align [filtered] %3 = mul i16 %load_y2, 8 %shift3 = ashr i16 %load_x1, %3 %4 = trunc i16 %shift3 to i8 - store i8 %4, i8* %b, align 1 + store i8 %4, i8* %b, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__wordaccess_generated_as_rsh_and_trunc_i16.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__wordaccess_generated_as_rsh_and_trunc_i16.snap index 6b101f4f96e..3ef10dfa4af 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__wordaccess_generated_as_rsh_and_trunc_i16.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__statement_codegen_test__wordaccess_generated_as_rsh_and_trunc_i16.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/statement_codegen_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,17 +16,17 @@ entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_x = load i32, i32* %x, align 4 + %load_x = load i32, i32* %x, align [filtered] %shift = lshr i32 %load_x, 0 %1 = trunc i32 %shift to i16 - store i16 %1, i16* %a, align 2 - %load_x1 = load i32, i32* %x, align 4 + store i16 %1, i16* %a, align [filtered] + %load_x1 = load i32, i32* %x, align [filtered] %shift2 = lshr i32 %load_x1, 16 %2 = trunc i32 %shift2 to i16 - store i16 %2, i16* %a, align 2 - %load_y = load i32, i32* %y, align 4 + store i16 %2, i16* %a, align [filtered] + %load_y = load i32, i32* %y, align [filtered] %shift3 = ashr i32 %load_y, 16 %3 = trunc i32 %shift3 to i16 - store i16 %3, i16* %a, align 2 + store i16 %3, i16* %a, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__casted_string_assignment_uses_memcpy.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__casted_string_assignment_uses_memcpy.snap index 126b22f3f9b..5c2ba67c3dc 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__casted_string_assignment_uses_memcpy.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__casted_string_assignment_uses_memcpy.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -19,13 +18,13 @@ entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %1 = bitcast [81 x i8]* %a to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 80, i1 false) %2 = bitcast [81 x i8]* %a to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %2, i8* align 1 getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 80, i1 false) %3 = bitcast [81 x i16]* %b to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %3, i8* align 2 bitcast ([4 x i16]* @utf16_literal_0 to i8*), i32 160, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] bitcast ([4 x i16]* @utf16_literal_0 to i8*), i32 160, i1 false) %4 = bitcast [81 x i16]* %b to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %4, i8* align 2 bitcast ([4 x i16]* @utf16_literal_0 to i8*), i32 160, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %4, i8* align [filtered] bitcast ([4 x i16]* @utf16_literal_0 to i8*), i32 160, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_returning_generic_string_should_return_by_ref.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_returning_generic_string_should_return_by_ref.snap index 6c195137032..8ed5d95be1b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_returning_generic_string_should_return_by_ref.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_returning_generic_string_should_return_by_ref.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,16 +14,16 @@ target triple = "[filtered]" define void @MID__STRING(i8* %0, i8* %1, i32 %2, i32 %3) { entry: - %MID__STRING = alloca i8*, align 8 - store i8* %0, i8** %MID__STRING, align 8 - %IN = alloca i8*, align 8 - store i8* %1, i8** %IN, align 8 - %L = alloca i32, align 4 - store i32 %2, i32* %L, align 4 - %P = alloca i32, align 4 - store i32 %3, i32* %P, align 4 - %deref = load i8*, i8** %MID__STRING, align 8 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %deref, i8* align 1 getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 4, i1 false) + %MID__STRING = alloca i8*, align [filtered] + store i8* %0, i8** %MID__STRING, align [filtered] + %IN = alloca i8*, align [filtered] + store i8* %1, i8** %IN, align [filtered] + %L = alloca i32, align [filtered] + store i32 %2, i32* %L, align [filtered] + %P = alloca i32, align [filtered] + store i32 %3, i32* %P, align [filtered] + %deref = load i8*, i8** %MID__STRING, align [filtered] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %deref, i8* align [filtered] getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 4, i1 false) ret void } @@ -32,15 +31,15 @@ define void @main(%main* %0) { entry: %fmt = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %x = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - %__MID0 = alloca [81 x i8], align 1 + %__MID0 = alloca [81 x i8], align [filtered] %1 = bitcast [81 x i8]* %__MID0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [81 x i8]* %__MID0 to i8* %3 = bitcast [61 x i8]* %fmt to i8* call void @MID__STRING(i8* %2, i8* %3, i32 1, i32 2) %4 = bitcast [81 x i8]* %x to i8* %5 = bitcast [81 x i8]* %__MID0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %4, i8* align 1 %5, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %4, i8* align [filtered] %5, i32 80, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_returns_a_literal_string.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_returns_a_literal_string.snap index 90eb2240f3b..7dd168ba449 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_returns_a_literal_string.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_returns_a_literal_string.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: program -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,24 +14,24 @@ target triple = "[filtered]" define void @ret(i8* %0) { entry: - %ret = alloca i8*, align 8 - store i8* %0, i8** %ret, align 8 - %deref = load i8*, i8** %ret, align 8 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %deref, i8* align 1 getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 4, i1 false) + %ret = alloca i8*, align [filtered] + store i8* %0, i8** %ret, align [filtered] + %deref = load i8*, i8** %ret, align [filtered] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %deref, i8* align [filtered] getelementptr inbounds ([4 x i8], [4 x i8]* @utf08_literal_0, i32 0, i32 0), i32 4, i1 false) ret void } define void @main(%main* %0) { entry: %str = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - %__ret0 = alloca [81 x i8], align 1 + %__ret0 = alloca [81 x i8], align [filtered] %1 = bitcast [81 x i8]* %__ret0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [81 x i8]* %__ret0 to i8* call void @ret(i8* %2) %3 = bitcast [81 x i8]* %str to i8* %4 = bitcast [81 x i8]* %__ret0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 %4, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] %4, i32 80, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_takes_string_paramter_and_returns_string.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_takes_string_paramter_and_returns_string.snap index bd58250aa9f..c5685839ebf 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_takes_string_paramter_and_returns_string.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_takes_string_paramter_and_returns_string.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: program -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,29 +14,29 @@ target triple = "[filtered]" define void @read_string(i8* %0, i8* %1) { entry: - %read_string = alloca i8*, align 8 - store i8* %0, i8** %read_string, align 8 - %to_read = alloca [81 x i8], align 1 + %read_string = alloca i8*, align [filtered] + store i8* %0, i8** %read_string, align [filtered] + %to_read = alloca [81 x i8], align [filtered] %bitcast = bitcast [81 x i8]* %to_read to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 81, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %1, i64 80, i1 false) - %deref = load i8*, i8** %read_string, align 8 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 81, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %1, i64 80, i1 false) + %deref = load i8*, i8** %read_string, align [filtered] %2 = bitcast [81 x i8]* %to_read to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %deref, i8* align 1 %2, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %deref, i8* align [filtered] %2, i32 80, i1 false) ret void } define void @main(%main* %0) { entry: %text1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - %__read_string0 = alloca [81 x i8], align 1 + %__read_string0 = alloca [81 x i8], align [filtered] %1 = bitcast [81 x i8]* %__read_string0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [81 x i8]* %__read_string0 to i8* call void @read_string(i8* %2, i8* getelementptr inbounds ([154 x i8], [154 x i8]* @utf08_literal_0, i32 0, i32 0)) %3 = bitcast [81 x i8]* %text1 to i8* %4 = bitcast [81 x i8]* %__read_string0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 %4, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] %4, i32 80, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_var_constant_strings_should_be_collected_as_literals.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_var_constant_strings_should_be_collected_as_literals.snap index 9a84df2baae..e267269f411 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_var_constant_strings_should_be_collected_as_literals.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__function_var_constant_strings_should_be_collected_as_literals.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,19 +14,19 @@ target triple = "[filtered]" define i64 @FSTRING_TO_DT() { entry: - %FSTRING_TO_DT = alloca i64, align 8 - %ignore = alloca [2 x i8], align 1 - %fchar = alloca [2 x i8], align 1 + %FSTRING_TO_DT = alloca i64, align [filtered] + %ignore = alloca [2 x i8], align [filtered] + %fchar = alloca [2 x i8], align [filtered] %0 = bitcast [2 x i8]* %ignore to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.ignore__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.ignore__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) %1 = bitcast [2 x i8]* %fchar to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.fchar__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) - store i64 0, i64* %FSTRING_TO_DT, align 8 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.fchar__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) + store i64 0, i64* %FSTRING_TO_DT, align [filtered] %2 = bitcast [2 x i8]* %fchar to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %2, i8* align 1 getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_0, i32 0, i32 0), i32 1, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_0, i32 0, i32 0), i32 1, i1 false) %3 = bitcast [2 x i8]* %ignore to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_1, i32 0, i32 0), i32 1, i1 false) - %FSTRING_TO_DT_ret = load i64, i64* %FSTRING_TO_DT, align 8 + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] getelementptr inbounds ([2 x i8], [2 x i8]* @utf08_literal_1, i32 0, i32 0), i32 1, i1 false) + %FSTRING_TO_DT_ret = load i64, i64* %FSTRING_TO_DT, align [filtered] ret i64 %FSTRING_TO_DT_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_string_output.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_string_output.snap index eda1adb316a..44d9b05b33f 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_string_output.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_string_output.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -21,9 +20,9 @@ entry: %output1 = getelementptr inbounds %prog, %prog* %0, i32 0, i32 0 %output2 = getelementptr inbounds %prog, %prog* %0, i32 0, i32 1 %1 = bitcast [81 x i8]* %output1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([7 x i8], [7 x i8]* @utf08_literal_0, i32 0, i32 0), i32 7, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([7 x i8], [7 x i8]* @utf08_literal_0, i32 0, i32 0), i32 7, i1 false) %2 = bitcast [81 x i16]* %output2 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %2, i8* align 2 bitcast ([8 x i16]* @utf16_literal_0 to i8*), i32 16, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] bitcast ([8 x i16]* @utf16_literal_0 to i8*), i32 16, i1 false) ret void } @@ -33,9 +32,9 @@ entry: %y = getelementptr inbounds %main, %main* %0, i32 0, i32 1 call void @prog(%prog* @prog_instance) %1 = bitcast [7 x i8]* %x to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 0, i32 0), i32 6, i1 false) %2 = bitcast [8 x i16]* %y to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %2, i8* align 2 bitcast ([81 x i16]* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1) to i8*), i32 14, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] bitcast ([81 x i16]* getelementptr inbounds (%prog, %prog* @prog_instance, i32 0, i32 1) to i8*), i32 14, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_with_casted_string_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_with_casted_string_assignment.snap index ded08f4b7ae..20d671279cc 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_with_casted_string_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_with_casted_string_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -21,9 +20,9 @@ entry: %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %1 = bitcast [81 x i8]* %y to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([12 x i8], [12 x i8]* @utf08_literal_0, i32 0, i32 0), i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([12 x i8], [12 x i8]* @utf08_literal_0, i32 0, i32 0), i32 80, i1 false) %2 = bitcast [81 x i16]* %z to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %2, i8* align 2 bitcast ([18 x i16]* @utf16_literal_1 to i8*), i32 160, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] bitcast ([18 x i16]* @utf16_literal_1 to i8*), i32 160, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_with_string_type_assignment.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_with_string_type_assignment.snap index 1e7ae940a06..2256db21f09 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_with_string_type_assignment.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__program_with_string_type_assignment.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -23,11 +22,11 @@ entry: %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %zz = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %1 = bitcast [81 x i8]* %y to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([12 x i8], [12 x i8]* @utf08_literal_0, i32 0, i32 0), i32 12, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([12 x i8], [12 x i8]* @utf08_literal_0, i32 0, i32 0), i32 12, i1 false) %2 = bitcast [100 x i8]* %z to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %2, i8* align 1 getelementptr inbounds ([17 x i8], [17 x i8]* @utf08_literal_1, i32 0, i32 0), i32 17, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] getelementptr inbounds ([17 x i8], [17 x i8]* @utf08_literal_1, i32 0, i32 0), i32 17, i1 false) %3 = bitcast [100 x i16]* %zz to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %3, i8* align 2 bitcast ([17 x i16]* @utf16_literal_0 to i8*), i32 34, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] bitcast ([17 x i16]* @utf16_literal_0 to i8*), i32 34, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__string_function_parameters.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__string_function_parameters.snap index cb54b24a66e..941262450f4 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__string_function_parameters.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__string_function_parameters.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,17 +15,17 @@ target triple = "[filtered]" define i16 @foo(i8* %0) { entry: - %foo = alloca i16, align 2 - %s = alloca [81 x i8], align 1 + %foo = alloca i16, align [filtered] + %s = alloca [81 x i8], align [filtered] %bitcast = bitcast [81 x i8]* %s to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 81, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 80, i1 false) - store i16 0, i16* %foo, align 2 - %foo_ret = load i16, i16* %foo, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 81, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 80, i1 false) + store i16 0, i16* %foo, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret buffer_block: ; No predecessors! - %foo_ret1 = load i16, i16* %foo, align 2 + %foo_ret1 = load i16, i16* %foo, align [filtered] ret i16 %foo_ret1 } @@ -36,9 +35,9 @@ entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %1 = bitcast [81 x i8]* %a to i8* %2 = bitcast [11 x i8]* %s to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 %2, i32 11, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] %2, i32 11, i1 false) %3 = bitcast [81 x i8]* %a to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) %4 = bitcast [11 x i8]* %s to i8* %call = call i16 @foo(i8* %4) %call1 = call i16 @foo(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0)) diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__using_a_constant_var_string_should_be_memcpyable.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__using_a_constant_var_string_should_be_memcpyable.snap index 241e0170deb..d1228758334 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__using_a_constant_var_string_should_be_memcpyable.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__using_a_constant_var_string_should_be_memcpyable.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -13,29 +12,29 @@ target triple = "[filtered]" define i8 @STRING_EQUAL(i8* %0, i8* %1) { entry: - %STRING_EQUAL = alloca i8, align 1 - %op1 = alloca i8*, align 8 - store i8* %0, i8** %op1, align 8 - %op2 = alloca i8*, align 8 - store i8* %1, i8** %op2, align 8 - store i8 0, i8* %STRING_EQUAL, align 1 - %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align 1 + %STRING_EQUAL = alloca i8, align [filtered] + %op1 = alloca i8*, align [filtered] + store i8* %0, i8** %op1, align [filtered] + %op2 = alloca i8*, align [filtered] + store i8* %1, i8** %op2, align [filtered] + store i8 0, i8* %STRING_EQUAL, align [filtered] + %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align [filtered] ret i8 %STRING_EQUAL_ret } define i64 @FSTRING_TO_DT() { entry: - %FSTRING_TO_DT = alloca i64, align 8 - %ignore = alloca [2 x i8], align 1 - %fchar = alloca [2 x i8], align 1 - %c = alloca [2 x i8], align 1 + %FSTRING_TO_DT = alloca i64, align [filtered] + %ignore = alloca [2 x i8], align [filtered] + %fchar = alloca [2 x i8], align [filtered] + %c = alloca [2 x i8], align [filtered] %0 = bitcast [2 x i8]* %ignore to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.ignore__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.ignore__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) %1 = bitcast [2 x i8]* %fchar to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.fchar__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.fchar__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [2 x i8]* %c to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %2, i8 0, i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) - store i64 0, i64* %FSTRING_TO_DT, align 8 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %2, i8 0, i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) + store i64 0, i64* %FSTRING_TO_DT, align [filtered] %3 = bitcast [2 x i8]* %c to i8* %4 = bitcast [2 x i8]* %ignore to i8* %call = call i8 @STRING_EQUAL(i8* %3, i8* %4) @@ -46,7 +45,7 @@ condition_body: ; preds = %entry br label %continue continue: ; preds = %condition_body, %entry - %FSTRING_TO_DT_ret = load i64, i64* %FSTRING_TO_DT, align 8 + %FSTRING_TO_DT_ret = load i64, i64* %FSTRING_TO_DT, align [filtered] ret i64 %FSTRING_TO_DT_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__using_a_constant_var_string_should_be_memcpyable_nonref.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__using_a_constant_var_string_should_be_memcpyable_nonref.snap index 99fa5afe981..009c03741d7 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__using_a_constant_var_string_should_be_memcpyable_nonref.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__using_a_constant_var_string_should_be_memcpyable_nonref.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -13,33 +12,33 @@ target triple = "[filtered]" define i8 @STRING_EQUAL(i8* %0, i8* %1) { entry: - %STRING_EQUAL = alloca i8, align 1 - %op1 = alloca [1025 x i8], align 1 + %STRING_EQUAL = alloca i8, align [filtered] + %op1 = alloca [1025 x i8], align [filtered] %bitcast = bitcast [1025 x i8]* %op1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 1024, i1 false) - %op2 = alloca [1025 x i8], align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 1024, i1 false) + %op2 = alloca [1025 x i8], align [filtered] %bitcast1 = bitcast [1025 x i8]* %op2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast1, i8 0, i64 1025, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast1, i8* align 1 %1, i64 1024, i1 false) - store i8 0, i8* %STRING_EQUAL, align 1 - %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align 1 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast1, i8 0, i64 1025, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast1, i8* align [filtered] %1, i64 1024, i1 false) + store i8 0, i8* %STRING_EQUAL, align [filtered] + %STRING_EQUAL_ret = load i8, i8* %STRING_EQUAL, align [filtered] ret i8 %STRING_EQUAL_ret } define i64 @FSTRING_TO_DT() { entry: - %FSTRING_TO_DT = alloca i64, align 8 - %ignore = alloca [2 x i8], align 1 - %fchar = alloca [2 x i8], align 1 - %c = alloca [2 x i8], align 1 + %FSTRING_TO_DT = alloca i64, align [filtered] + %ignore = alloca [2 x i8], align [filtered] + %fchar = alloca [2 x i8], align [filtered] + %c = alloca [2 x i8], align [filtered] %0 = bitcast [2 x i8]* %ignore to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.ignore__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.ignore__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) %1 = bitcast [2 x i8]* %fchar to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.fchar__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([2 x i8], [2 x i8]* @__FSTRING_TO_DT.fchar__init, i32 0, i32 0), i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [2 x i8]* %c to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %2, i8 0, i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) - store i64 0, i64* %FSTRING_TO_DT, align 8 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %2, i8 0, i64 ptrtoint ([2 x i8]* getelementptr ([2 x i8], [2 x i8]* null, i32 1) to i64), i1 false) + store i64 0, i64* %FSTRING_TO_DT, align [filtered] %3 = bitcast [2 x i8]* %c to i8* %4 = bitcast [2 x i8]* %ignore to i8* %call = call i8 @STRING_EQUAL(i8* %3, i8* %4) @@ -50,7 +49,7 @@ condition_body: ; preds = %entry br label %continue continue: ; preds = %condition_body, %entry - %FSTRING_TO_DT_ret = load i64, i64* %FSTRING_TO_DT, align 8 + %FSTRING_TO_DT_ret = load i64, i64* %FSTRING_TO_DT, align [filtered] ret i64 %FSTRING_TO_DT_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_length_strings_can_be_created.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_length_strings_can_be_created.snap index 9bafab43fb5..9b5bd932934 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_length_strings_can_be_created.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_length_strings_can_be_created.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -23,9 +22,9 @@ entry: %wy = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %wz = getelementptr inbounds %prg, %prg* %0, i32 0, i32 3 %1 = bitcast [16 x i8]* %y to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([12 x i8], [12 x i8]* @utf08_literal_0, i32 0, i32 0), i32 12, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([12 x i8], [12 x i8]* @utf08_literal_0, i32 0, i32 0), i32 12, i1 false) %2 = bitcast [16 x i16]* %wy to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %2, i8* align 2 bitcast ([12 x i16]* @utf16_literal_0 to i8*), i32 24, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] bitcast ([12 x i16]* @utf16_literal_0 to i8*), i32 24, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_length_strings_using_constants_can_be_created.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_length_strings_using_constants_can_be_created.snap index ef7b653a81e..2ed733c07a5 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_length_strings_using_constants_can_be_created.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_length_strings_using_constants_can_be_created.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -25,9 +24,9 @@ entry: %wy = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 %wz = getelementptr inbounds %prg, %prg* %0, i32 0, i32 3 %1 = bitcast [16 x i8]* %y to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([12 x i8], [12 x i8]* @utf08_literal_0, i32 0, i32 0), i32 12, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([12 x i8], [12 x i8]* @utf08_literal_0, i32 0, i32 0), i32 12, i1 false) %2 = bitcast [31 x i16]* %wy to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 2 %2, i8* align 2 bitcast ([12 x i16]* @utf16_literal_0 to i8*), i32 24, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] bitcast ([12 x i16]* @utf16_literal_0 to i8*), i32 24, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_string_assignment_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_string_assignment_test.snap index 2cff91b9fcb..ade16278342 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_string_assignment_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__variable_string_assignment_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -19,10 +18,10 @@ entry: %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %1 = bitcast [16 x i8]* %y to i8* %2 = bitcast [31 x i8]* %z to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 %2, i32 15, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] %2, i32 15, i1 false) %3 = bitcast [31 x i8]* %z to i8* %4 = bitcast [16 x i8]* %y to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 %4, i32 16, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] %4, i32 16, i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__vartmp_string_init_test.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__vartmp_string_init_test.snap index 43d6a4cebf1..2afbc1a01ad 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__vartmp_string_init_test.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__string_tests__vartmp_string_init_test.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/string_tests.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,12 +14,12 @@ target triple = "[filtered]" define void @prg(%prg* %0) { entry: - %y = alloca [16 x i8], align 1 - %z = alloca [31 x i8], align 1 + %y = alloca [16 x i8], align [filtered] + %z = alloca [31 x i8], align [filtered] %1 = bitcast [16 x i8]* %y to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([16 x i8]* getelementptr ([16 x i8], [16 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([16 x i8]* getelementptr ([16 x i8], [16 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [31 x i8]* %z to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %2, i8* align 1 getelementptr inbounds ([31 x i8], [31 x i8]* @__prg.z__init, i32 0, i32 0), i64 ptrtoint ([31 x i8]* getelementptr ([31 x i8], [31 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %2, i8* align [filtered] getelementptr inbounds ([31 x i8], [31 x i8]* @__prg.z__init, i32 0, i32 0), i64 ptrtoint ([31 x i8]* getelementptr ([31 x i8], [31 x i8]* null, i32 1) to i64), i1 false) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__aliased_datatypes_respect_conversion_rules.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__aliased_datatypes_respect_conversion_rules.snap index b50bdd1cfb8..fc84830f325 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__aliased_datatypes_respect_conversion_rules.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__aliased_datatypes_respect_conversion_rules.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,15 +16,15 @@ entry: %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %c = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_b = load i8, i8* %b, align 1 + %load_b = load i8, i8* %b, align [filtered] %1 = sext i8 %load_b to i32 - %load_c = load i32, i32* %c, align 4 + %load_c = load i32, i32* %c, align [filtered] %tmpVar = add i32 %1, %load_c - store i32 %tmpVar, i32* %x, align 4 - %load_c1 = load i32, i32* %c, align 4 - %load_x = load i32, i32* %x, align 4 + store i32 %tmpVar, i32* %x, align [filtered] + %load_c1 = load i32, i32* %c, align [filtered] + %load_x = load i32, i32* %x, align [filtered] %tmpVar2 = add i32 %load_c1, %load_x %2 = trunc i32 %tmpVar2 to i8 - store i8 %2, i8* %b, align 1 + store i8 %2, i8* %b, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__datatypes_larger_than_int_promote_the_second_operand.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__datatypes_larger_than_int_promote_the_second_operand.snap index ece4ed7e3fa..60659831a1a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__datatypes_larger_than_int_promote_the_second_operand.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__datatypes_larger_than_int_promote_the_second_operand.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,10 +16,10 @@ entry: %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %c = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_b = load i32, i32* %b, align 4 + %load_b = load i32, i32* %b, align [filtered] %1 = sext i32 %load_b to i64 - %load_c = load i64, i64* %c, align 8 + %load_c = load i64, i64* %c, align [filtered] %tmpVar = add i64 %1, %load_c - store i64 %tmpVar, i64* %x, align 8 + store i64 %tmpVar, i64* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__datatypes_smaller_than_dint_promoted_to_dint.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__datatypes_smaller_than_dint_promoted_to_dint.snap index c40964af676..cabeab98a14 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__datatypes_smaller_than_dint_promoted_to_dint.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__datatypes_smaller_than_dint_promoted_to_dint.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,10 +16,10 @@ entry: %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %c = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_b = load i8, i8* %b, align 1 + %load_b = load i8, i8* %b, align [filtered] %1 = sext i8 %load_b to i32 - %load_c = load i32, i32* %c, align 4 + %load_c = load i32, i32* %c, align [filtered] %tmpVar = add i32 %1, %load_c - store i32 %tmpVar, i32* %x, align 4 + store i32 %tmpVar, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__even_all_sint_expressions_fallback_to_dint.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__even_all_sint_expressions_fallback_to_dint.snap index b32301e40ed..c28fed0aa80 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__even_all_sint_expressions_fallback_to_dint.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__even_all_sint_expressions_fallback_to_dint.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,12 +16,12 @@ entry: %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %c = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_b = load i8, i8* %b, align 1 + %load_b = load i8, i8* %b, align [filtered] %1 = sext i8 %load_b to i32 - %load_c = load i8, i8* %c, align 1 + %load_c = load i8, i8* %c, align [filtered] %2 = sext i8 %load_c to i32 %tmpVar = add i32 %1, %2 %3 = trunc i32 %tmpVar to i8 - store i8 %3, i8* %x, align 1 + store i8 %3, i8* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_and_double_mix_converted_to_double.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_and_double_mix_converted_to_double.snap index d50d134b5ef..6e8be4d89a7 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_and_double_mix_converted_to_double.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_and_double_mix_converted_to_double.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,10 +16,10 @@ entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %c = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_b = load double, double* %b, align 8 - %load_a = load float, float* %a, align 4 + %load_b = load double, double* %b, align [filtered] + %load_a = load float, float* %a, align [filtered] %1 = fpext float %load_a to double %tmpVar = fadd double %load_b, %1 - store double %tmpVar, double* %c, align 8 + store double %tmpVar, double* %c, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_assigned_to_int_is_cast.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_assigned_to_int_is_cast.snap index d7f26b22d9d..83db7e9f637 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_assigned_to_int_is_cast.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_assigned_to_int_is_cast.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,11 +16,11 @@ entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %c = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_c = load float, float* %c, align 4 + %load_c = load float, float* %c, align [filtered] %1 = fptosi float %load_c to i16 - store i16 %1, i16* %a, align 2 - %load_c1 = load float, float* %c, align 4 + store i16 %1, i16* %a, align [filtered] + %load_c1 = load float, float* %c, align [filtered] %2 = fptoui float %load_c1 to i16 - store i16 %2, i16* %b, align 2 + store i16 %2, i16* %b, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_assinged_to_double_to_double.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_assinged_to_double_to_double.snap index fa2e3717cb5..82114144d8c 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_assinged_to_double_to_double.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__float_assinged_to_double_to_double.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,8 +15,8 @@ define void @prg(%prg* %0) { entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_a = load float, float* %a, align 4 + %load_a = load float, float* %a, align [filtered] %1 = fpext float %load_a to double - store double %1, double* %b, align 8 + store double %1, double* %b, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_assigned_to_float_is_cast.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_assigned_to_float_is_cast.snap index ff62d286d59..78700647f36 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_assigned_to_float_is_cast.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_assigned_to_float_is_cast.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,11 +16,11 @@ entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %c = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_a = load i16, i16* %a, align 2 + %load_a = load i16, i16* %a, align [filtered] %1 = sitofp i16 %load_a to float - store float %1, float* %c, align 4 - %load_b = load i16, i16* %b, align 2 + store float %1, float* %c, align [filtered] + %load_b = load i16, i16* %b, align [filtered] %2 = uitofp i16 %load_b to float - store float %2, float* %c, align 4 + store float %2, float* %c, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_bigger_than_byte_promoted_on_compare_statement.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_bigger_than_byte_promoted_on_compare_statement.snap index 1c6d4d41ca4..910817ee46a 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_bigger_than_byte_promoted_on_compare_statement.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_bigger_than_byte_promoted_on_compare_statement.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,8 +15,8 @@ define void @prg(%prg* %0) { entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_b = load i64, i64* %b, align 8 - %load_a = load i8, i8* %a, align 1 + %load_b = load i64, i64* %b, align [filtered] + %load_a = load i8, i8* %a, align [filtered] %1 = zext i8 %load_a to i64 %tmpVar = icmp slt i64 %load_b, %1 ret void diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_bigger_than_float_converted_to_double.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_bigger_than_float_converted_to_double.snap index 1d4af0214eb..b59a536bd8c 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_bigger_than_float_converted_to_double.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_bigger_than_float_converted_to_double.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,9 +15,9 @@ define void @prg(%prg* %0) { entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_b = load i64, i64* %b, align 8 + %load_b = load i64, i64* %b, align [filtered] %1 = sitofp i64 %load_b to double - %load_a = load float, float* %a, align 4 + %load_a = load float, float* %a, align [filtered] %2 = fpext float %load_a to double %tmpVar = fadd double %1, %2 ret void diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_smaller_or_equal_to_float_converted_to_float.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_smaller_or_equal_to_float_converted_to_float.snap index bc81fe80caf..2c638db1975 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_smaller_or_equal_to_float_converted_to_float.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__int_smaller_or_equal_to_float_converted_to_float.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,10 +16,10 @@ entry: %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %c = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_b = load i16, i16* %b, align 2 + %load_b = load i16, i16* %b, align [filtered] %1 = sitofp i16 %load_b to float - %load_a = load float, float* %a, align 4 + %load_a = load float, float* %a, align [filtered] %tmpVar = fadd float %1, %load_a - store float %tmpVar, float* %c, align 4 + store float %tmpVar, float* %c, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__numerical_promotion_for_variadic_functions_without_declaration.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__numerical_promotion_for_variadic_functions_without_declaration.snap index b3cbb90e9ac..4800f61f347 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__numerical_promotion_for_variadic_functions_without_declaration.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__numerical_promotion_for_variadic_functions_without_declaration.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,20 +16,20 @@ declare i32 @printf(i8*, ...) define void @main(%main* %0) { entry: - %s = alloca [81 x i8], align 1 - %float = alloca float, align 4 - %double = alloca double, align 8 - %integer = alloca i16, align 2 + %s = alloca [81 x i8], align [filtered] + %float = alloca float, align [filtered] + %double = alloca double, align [filtered] + %integer = alloca i16, align [filtered] %1 = bitcast [81 x i8]* %s to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 getelementptr inbounds ([81 x i8], [81 x i8]* @__main.s__init, i32 0, i32 0), i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) - store float 3.000000e+00, float* %float, align 4 - store double 3.000000e+00, double* %double, align 8 - store i16 3, i16* %integer, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([81 x i8], [81 x i8]* @__main.s__init, i32 0, i32 0), i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + store float 3.000000e+00, float* %float, align [filtered] + store double 3.000000e+00, double* %double, align [filtered] + store i16 3, i16* %integer, align [filtered] %2 = bitcast [81 x i8]* %s to i8* - %load_float = load float, float* %float, align 4 + %load_float = load float, float* %float, align [filtered] %3 = fpext float %load_float to double - %load_double = load double, double* %double, align 8 - %load_integer = load i16, i16* %integer, align 2 + %load_double = load double, double* %double, align [filtered] + %load_integer = load i16, i16* %integer, align [filtered] %4 = sext i16 %load_integer to i32 %call = call i32 (i8*, ...) @printf(i8* %2, double 3.000000e+00, double %3, double %load_double, i32 %4) ret void diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__small_int_varargs_get_promoted_while_32bit_and_higher_keep_their_type.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__small_int_varargs_get_promoted_while_32bit_and_higher_keep_their_type.snap index 47ff568e0c3..cc458352f3b 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__small_int_varargs_get_promoted_while_32bit_and_higher_keep_their_type.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__small_int_varargs_get_promoted_while_32bit_and_higher_keep_their_type.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,27 +14,27 @@ declare i32 @printf(i8*, ...) define i32 @main() { entry: - %main = alloca i32, align 4 - %out1 = alloca i16, align 2 - %out2 = alloca i32, align 4 - %out3 = alloca i64, align 8 - %out4 = alloca i32, align 4 - store i16 -1, i16* %out1, align 2 - store i32 -1, i32* %out2, align 4 - store i64 -1, i64* %out3, align 8 - store i32 -1, i32* %out4, align 4 - store i32 0, i32* %main, align 4 - %load_out1 = load i16, i16* %out1, align 2 + %main = alloca i32, align [filtered] + %out1 = alloca i16, align [filtered] + %out2 = alloca i32, align [filtered] + %out3 = alloca i64, align [filtered] + %out4 = alloca i32, align [filtered] + store i16 -1, i16* %out1, align [filtered] + store i32 -1, i32* %out2, align [filtered] + store i64 -1, i64* %out3, align [filtered] + store i32 -1, i32* %out4, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_out1 = load i16, i16* %out1, align [filtered] %0 = sext i16 %load_out1 to i32 - %load_out2 = load i32, i32* %out2, align 4 - %load_out3 = load i64, i64* %out3, align 8 - %load_out4 = load i32, i32* %out4, align 4 + %load_out2 = load i32, i32* %out2, align [filtered] + %load_out3 = load i64, i64* %out3, align [filtered] + %load_out4 = load i32, i32* %out4, align [filtered] %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @utf08_literal_0, i32 0, i32 0), i32 %0, i32 %load_out2, i64 %load_out3, i32 %load_out4) - %load_out11 = load i16, i16* %out1, align 2 + %load_out11 = load i16, i16* %out1, align [filtered] %1 = sext i16 %load_out11 to i32 - %load_out22 = load i32, i32* %out2, align 4 - %load_out33 = load i64, i64* %out3, align 8 + %load_out22 = load i32, i32* %out2, align [filtered] + %load_out33 = load i64, i64* %out3, align [filtered] %call4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @utf08_literal_1, i32 0, i32 0), i32 %1, i32 %load_out22, i64 %load_out33) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__unsingned_datatypes_smaller_than_dint_promoted_to_dint.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__unsingned_datatypes_smaller_than_dint_promoted_to_dint.snap index bf414d3e0f3..9244f28a5e8 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__unsingned_datatypes_smaller_than_dint_promoted_to_dint.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__typesystem_test__unsingned_datatypes_smaller_than_dint_promoted_to_dint.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/typesystem_test.rs expression: result -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -17,10 +16,10 @@ entry: %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %c = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - %load_b = load i8, i8* %b, align 1 + %load_b = load i8, i8* %b, align [filtered] %1 = zext i8 %load_b to i32 - %load_c = load i32, i32* %c, align 4 + %load_c = load i32, i32* %c, align [filtered] %tmpVar = add i32 %1, %load_c - store i32 %tmpVar, i32* %x, align 4 + store i32 %tmpVar, i32* %x, align [filtered] ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__consecutive_calls_with_differently_sized_arrays.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__consecutive_calls_with_differently_sized_arrays.snap index ff5bf0837d4..d98517cee65 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__consecutive_calls_with_differently_sized_arrays.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__consecutive_calls_with_differently_sized_arrays.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/vla_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,85 +13,85 @@ target triple = "[filtered]" define i16 @foo(%__foo_vla* %0) { entry: - %foo = alloca i16, align 2 - %vla = alloca %__foo_vla, align 8 + %foo = alloca i16, align [filtered] + %vla = alloca %__foo_vla, align [filtered] %1 = bitcast %__foo_vla* %vla to i8* %2 = bitcast %__foo_vla* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) - store i16 0, i16* %foo, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) + store i16 0, i16* %foo, align [filtered] %vla_arr_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 0 - %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align 8 + %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align [filtered] %dim_arr = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 1 %start_idx_ptr0 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 0 %end_idx_ptr0 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 1 - %start_idx_value0 = load i32, i32* %start_idx_ptr0, align 4 - %end_idx_value0 = load i32, i32* %end_idx_ptr0, align 4 + %start_idx_value0 = load i32, i32* %start_idx_ptr0, align [filtered] + %end_idx_value0 = load i32, i32* %end_idx_ptr0, align [filtered] %start_idx_ptr1 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 2 %end_idx_ptr1 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 3 - %start_idx_value1 = load i32, i32* %start_idx_ptr1, align 4 - %end_idx_value1 = load i32, i32* %end_idx_ptr1, align 4 + %start_idx_value1 = load i32, i32* %start_idx_ptr1, align [filtered] + %end_idx_value1 = load i32, i32* %end_idx_ptr1, align [filtered] %3 = sub i32 %end_idx_value0, %start_idx_value0 %len_dim0 = add i32 1, %3 %4 = sub i32 %end_idx_value1, %start_idx_value1 %len_dim1 = add i32 1, %4 - %accum = alloca i32, align 4 - store i32 1, i32* %accum, align 4 - %load_accum = load i32, i32* %accum, align 4 + %accum = alloca i32, align [filtered] + store i32 1, i32* %accum, align [filtered] + %load_accum = load i32, i32* %accum, align [filtered] %product = mul i32 %load_accum, %len_dim1 - store i32 %product, i32* %accum, align 4 - %accessor_factor = load i32, i32* %accum, align 4 + store i32 %product, i32* %accum, align [filtered] + %accessor_factor = load i32, i32* %accum, align [filtered] %adj_access0 = sub i32 2, %start_idx_value0 %adj_access1 = sub i32 -1, %start_idx_value1 - %accum1 = alloca i32, align 4 - store i32 0, i32* %accum1, align 4 + %accum1 = alloca i32, align [filtered] + store i32 0, i32* %accum1, align [filtered] %multiply = mul i32 %adj_access0, %accessor_factor - %load_accum2 = load i32, i32* %accum1, align 4 + %load_accum2 = load i32, i32* %accum1, align [filtered] %accumulate = add i32 %load_accum2, %multiply - store i32 %accumulate, i32* %accum1, align 4 + store i32 %accumulate, i32* %accum1, align [filtered] %multiply3 = mul i32 %adj_access1, 1 - %load_accum4 = load i32, i32* %accum1, align 4 + %load_accum4 = load i32, i32* %accum1, align [filtered] %accumulate5 = add i32 %load_accum4, %multiply3 - store i32 %accumulate5, i32* %accum1, align 4 - %accessor = load i32, i32* %accum1, align 4 + store i32 %accumulate5, i32* %accum1, align [filtered] + %accessor = load i32, i32* %accum1, align [filtered] %arr_val = getelementptr inbounds i16, i16* %vla_arr_ptr, i32 %accessor - store i16 1, i16* %arr_val, align 2 - %foo_ret = load i16, i16* %foo, align 2 + store i16 1, i16* %arr_val, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret } define i32 @main() { entry: - %main = alloca i32, align 4 - %arr = alloca [60 x i16], align 2 - %arr2 = alloca [299 x i16], align 2 + %main = alloca i32, align [filtered] + %arr = alloca [60 x i16], align [filtered] + %arr2 = alloca [299 x i16], align [filtered] %0 = bitcast [60 x i16]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([60 x i16]* getelementptr ([60 x i16], [60 x i16]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([60 x i16]* getelementptr ([60 x i16], [60 x i16]* null, i32 1) to i64), i1 false) %1 = bitcast [299 x i16]* %arr2 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([299 x i16]* getelementptr ([299 x i16], [299 x i16]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 - %auto_deref = load [60 x i16], [60 x i16]* %arr, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([299 x i16]* getelementptr ([299 x i16], [299 x i16]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] + %auto_deref = load [60 x i16], [60 x i16]* %arr, align [filtered] %outer_arr_gep = getelementptr inbounds [60 x i16], [60 x i16]* %arr, i32 0, i32 0 - %vla_struct = alloca %__foo_vla, align 8 + %vla_struct = alloca %__foo_vla, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 1 - store [4 x i32] [i32 0, i32 14, i32 -2, i32 1], [4 x i32]* %vla_dimensions_gep, align 4 - store i16* %outer_arr_gep, i16** %vla_array_gep, align 8 - %2 = load %__foo_vla, %__foo_vla* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_vla, align 8 - store %__foo_vla %2, %__foo_vla* %vla_struct_ptr, align 8 + store [4 x i32] [i32 0, i32 14, i32 -2, i32 1], [4 x i32]* %vla_dimensions_gep, align [filtered] + store i16* %outer_arr_gep, i16** %vla_array_gep, align [filtered] + %2 = load %__foo_vla, %__foo_vla* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_vla, align [filtered] + store %__foo_vla %2, %__foo_vla* %vla_struct_ptr, align [filtered] %call = call i16 @foo(%__foo_vla* %vla_struct_ptr) - %auto_deref1 = load [299 x i16], [299 x i16]* %arr2, align 2 + %auto_deref1 = load [299 x i16], [299 x i16]* %arr2, align [filtered] %outer_arr_gep2 = getelementptr inbounds [299 x i16], [299 x i16]* %arr2, i32 0, i32 0 - %vla_struct3 = alloca %__foo_vla, align 8 + %vla_struct3 = alloca %__foo_vla, align [filtered] %vla_array_gep4 = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct3, i32 0, i32 0 %vla_dimensions_gep5 = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct3, i32 0, i32 1 - store [4 x i32] [i32 -8, i32 4, i32 -3, i32 19], [4 x i32]* %vla_dimensions_gep5, align 4 - store i16* %outer_arr_gep2, i16** %vla_array_gep4, align 8 - %3 = load %__foo_vla, %__foo_vla* %vla_struct3, align 8 - %vla_struct_ptr6 = alloca %__foo_vla, align 8 - store %__foo_vla %3, %__foo_vla* %vla_struct_ptr6, align 8 + store [4 x i32] [i32 -8, i32 4, i32 -3, i32 19], [4 x i32]* %vla_dimensions_gep5, align [filtered] + store i16* %outer_arr_gep2, i16** %vla_array_gep4, align [filtered] + %3 = load %__foo_vla, %__foo_vla* %vla_struct3, align [filtered] + %vla_struct_ptr6 = alloca %__foo_vla, align [filtered] + store %__foo_vla %3, %__foo_vla* %vla_struct_ptr6, align [filtered] %call7 = call i16 @foo(%__foo_vla* %vla_struct_ptr6) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__global_variable_passed_to_function_as_vla.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__global_variable_passed_to_function_as_vla.snap index 81ac40dec53..135d29413de 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__global_variable_passed_to_function_as_vla.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__global_variable_passed_to_function_as_vla.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/vla_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -15,41 +14,41 @@ target triple = "[filtered]" define i16 @foo(%__foo_vla* %0) { entry: - %foo = alloca i16, align 2 - %vla = alloca %__foo_vla, align 8 + %foo = alloca i16, align [filtered] + %vla = alloca %__foo_vla, align [filtered] %1 = bitcast %__foo_vla* %vla to i8* %2 = bitcast %__foo_vla* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) - store i16 0, i16* %foo, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) + store i16 0, i16* %foo, align [filtered] %vla_arr_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 0 - %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align 8 + %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align [filtered] %dim_arr = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 1 %start_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 0 %end_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 1 - %start_idx_value0 = load i32, i32* %start_idx_ptr0, align 4 - %end_idx_value0 = load i32, i32* %end_idx_ptr0, align 4 + %start_idx_value0 = load i32, i32* %start_idx_ptr0, align [filtered] + %end_idx_value0 = load i32, i32* %end_idx_ptr0, align [filtered] %tmpVar = sub i32 0, %start_idx_value0 %arr_val = getelementptr inbounds i16, i16* %vla_arr_ptr, i32 %tmpVar - store i16 10, i16* %arr_val, align 2 - %foo_ret = load i16, i16* %foo, align 2 + store i16 10, i16* %arr_val, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret } define i32 @main() { entry: - %main = alloca i32, align 4 - store i32 0, i32* %main, align 4 - %auto_deref = load [2 x i16], [2 x i16]* @arr, align 2 - %vla_struct = alloca %__foo_vla, align 8 + %main = alloca i32, align [filtered] + store i32 0, i32* %main, align [filtered] + %auto_deref = load [2 x i16], [2 x i16]* @arr, align [filtered] + %vla_struct = alloca %__foo_vla, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 1 - store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align 4 - store i16* getelementptr inbounds ([2 x i16], [2 x i16]* @arr, i32 0, i32 0), i16** %vla_array_gep, align 8 - %0 = load %__foo_vla, %__foo_vla* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_vla, align 8 - store %__foo_vla %0, %__foo_vla* %vla_struct_ptr, align 8 + store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align [filtered] + store i16* getelementptr inbounds ([2 x i16], [2 x i16]* @arr, i32 0, i32 0), i16** %vla_array_gep, align [filtered] + %0 = load %__foo_vla, %__foo_vla* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_vla, align [filtered] + store %__foo_vla %0, %__foo_vla* %vla_struct_ptr, align [filtered] %call = call i16 @foo(%__foo_vla* %vla_struct_ptr) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__internal_vla_struct_is_generated_for_call_statements.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__internal_vla_struct_is_generated_for_call_statements.snap index ece7ff55d86..0b121bc4886 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__internal_vla_struct_is_generated_for_call_statements.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__internal_vla_struct_is_generated_for_call_statements.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/vla_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,28 +13,28 @@ target triple = "[filtered]" define void @foo(%__foo_vla* %0) { entry: - %vla = alloca %__foo_vla, align 8 + %vla = alloca %__foo_vla, align [filtered] %1 = bitcast %__foo_vla* %vla to i8* %2 = bitcast %__foo_vla* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) ret void } define void @bar() { entry: - %arr = alloca [2 x i16], align 2 + %arr = alloca [2 x i16], align [filtered] %0 = bitcast [2 x i16]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([2 x i16]* getelementptr ([2 x i16], [2 x i16]* null, i32 1) to i64), i1 false) - %auto_deref = load [2 x i16], [2 x i16]* %arr, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([2 x i16]* getelementptr ([2 x i16], [2 x i16]* null, i32 1) to i64), i1 false) + %auto_deref = load [2 x i16], [2 x i16]* %arr, align [filtered] %outer_arr_gep = getelementptr inbounds [2 x i16], [2 x i16]* %arr, i32 0, i32 0 - %vla_struct = alloca %__foo_vla, align 8 + %vla_struct = alloca %__foo_vla, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 1 - store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align 4 - store i16* %outer_arr_gep, i16** %vla_array_gep, align 8 - %1 = load %__foo_vla, %__foo_vla* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_vla, align 8 - store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align 8 + store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align [filtered] + store i16* %outer_arr_gep, i16** %vla_array_gep, align [filtered] + %1 = load %__foo_vla, %__foo_vla* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_vla, align [filtered] + store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align [filtered] call void @foo(%__foo_vla* %vla_struct_ptr) ret void } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__multi_dimensional_vla.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__multi_dimensional_vla.snap index b860d9f9f45..fcc17d8c310 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__multi_dimensional_vla.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__multi_dimensional_vla.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/vla_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,71 +13,71 @@ target triple = "[filtered]" define i16 @foo(%__foo_vla* %0) { entry: - %foo = alloca i16, align 2 - %vla = alloca %__foo_vla, align 8 + %foo = alloca i16, align [filtered] + %vla = alloca %__foo_vla, align [filtered] %1 = bitcast %__foo_vla* %vla to i8* %2 = bitcast %__foo_vla* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) - store i16 0, i16* %foo, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) + store i16 0, i16* %foo, align [filtered] %vla_arr_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 0 - %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align 8 + %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align [filtered] %dim_arr = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 1 %start_idx_ptr0 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 0 %end_idx_ptr0 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 1 - %start_idx_value0 = load i32, i32* %start_idx_ptr0, align 4 - %end_idx_value0 = load i32, i32* %end_idx_ptr0, align 4 + %start_idx_value0 = load i32, i32* %start_idx_ptr0, align [filtered] + %end_idx_value0 = load i32, i32* %end_idx_ptr0, align [filtered] %start_idx_ptr1 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 2 %end_idx_ptr1 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 3 - %start_idx_value1 = load i32, i32* %start_idx_ptr1, align 4 - %end_idx_value1 = load i32, i32* %end_idx_ptr1, align 4 + %start_idx_value1 = load i32, i32* %start_idx_ptr1, align [filtered] + %end_idx_value1 = load i32, i32* %end_idx_ptr1, align [filtered] %3 = sub i32 %end_idx_value0, %start_idx_value0 %len_dim0 = add i32 1, %3 %4 = sub i32 %end_idx_value1, %start_idx_value1 %len_dim1 = add i32 1, %4 - %accum = alloca i32, align 4 - store i32 1, i32* %accum, align 4 - %load_accum = load i32, i32* %accum, align 4 + %accum = alloca i32, align [filtered] + store i32 1, i32* %accum, align [filtered] + %load_accum = load i32, i32* %accum, align [filtered] %product = mul i32 %load_accum, %len_dim1 - store i32 %product, i32* %accum, align 4 - %accessor_factor = load i32, i32* %accum, align 4 + store i32 %product, i32* %accum, align [filtered] + %accessor_factor = load i32, i32* %accum, align [filtered] %adj_access0 = sub i32 2, %start_idx_value0 %adj_access1 = sub i32 -1, %start_idx_value1 - %accum1 = alloca i32, align 4 - store i32 0, i32* %accum1, align 4 + %accum1 = alloca i32, align [filtered] + store i32 0, i32* %accum1, align [filtered] %multiply = mul i32 %adj_access0, %accessor_factor - %load_accum2 = load i32, i32* %accum1, align 4 + %load_accum2 = load i32, i32* %accum1, align [filtered] %accumulate = add i32 %load_accum2, %multiply - store i32 %accumulate, i32* %accum1, align 4 + store i32 %accumulate, i32* %accum1, align [filtered] %multiply3 = mul i32 %adj_access1, 1 - %load_accum4 = load i32, i32* %accum1, align 4 + %load_accum4 = load i32, i32* %accum1, align [filtered] %accumulate5 = add i32 %load_accum4, %multiply3 - store i32 %accumulate5, i32* %accum1, align 4 - %accessor = load i32, i32* %accum1, align 4 + store i32 %accumulate5, i32* %accum1, align [filtered] + %accessor = load i32, i32* %accum1, align [filtered] %arr_val = getelementptr inbounds i16, i16* %vla_arr_ptr, i32 %accessor - store i16 1, i16* %arr_val, align 2 - %foo_ret = load i16, i16* %foo, align 2 + store i16 1, i16* %arr_val, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret } define i32 @main() { entry: - %main = alloca i32, align 4 - %arr = alloca [20 x i16], align 2 + %main = alloca i32, align [filtered] + %arr = alloca [20 x i16], align [filtered] %0 = bitcast [20 x i16]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([20 x i16]* getelementptr ([20 x i16], [20 x i16]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 - %auto_deref = load [20 x i16], [20 x i16]* %arr, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([20 x i16]* getelementptr ([20 x i16], [20 x i16]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] + %auto_deref = load [20 x i16], [20 x i16]* %arr, align [filtered] %outer_arr_gep = getelementptr inbounds [20 x i16], [20 x i16]* %arr, i32 0, i32 0 - %vla_struct = alloca %__foo_vla, align 8 + %vla_struct = alloca %__foo_vla, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 1 - store [4 x i32] [i32 0, i32 4, i32 -2, i32 1], [4 x i32]* %vla_dimensions_gep, align 4 - store i16* %outer_arr_gep, i16** %vla_array_gep, align 8 - %1 = load %__foo_vla, %__foo_vla* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_vla, align 8 - store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align 8 + store [4 x i32] [i32 0, i32 4, i32 -2, i32 1], [4 x i32]* %vla_dimensions_gep, align [filtered] + store i16* %outer_arr_gep, i16** %vla_array_gep, align [filtered] + %1 = load %__foo_vla, %__foo_vla* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_vla, align [filtered] + store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align [filtered] %call = call i16 @foo(%__foo_vla* %vla_struct_ptr) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access.snap index 388340079df..48cf5098406 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/vla_tests.rs expression: res -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -14,46 +13,46 @@ target triple = "[filtered]" define i16 @foo(%__foo_vla* %0) { entry: - %foo = alloca i16, align 2 - %vla = alloca %__foo_vla, align 8 + %foo = alloca i16, align [filtered] + %vla = alloca %__foo_vla, align [filtered] %1 = bitcast %__foo_vla* %vla to i8* %2 = bitcast %__foo_vla* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) - store i16 0, i16* %foo, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) + store i16 0, i16* %foo, align [filtered] %vla_arr_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 0 - %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align 8 + %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align [filtered] %dim_arr = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 1 %start_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 0 %end_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 1 - %start_idx_value0 = load i32, i32* %start_idx_ptr0, align 4 - %end_idx_value0 = load i32, i32* %end_idx_ptr0, align 4 + %start_idx_value0 = load i32, i32* %start_idx_ptr0, align [filtered] + %end_idx_value0 = load i32, i32* %end_idx_ptr0, align [filtered] %tmpVar = sub i32 0, %start_idx_value0 %arr_val = getelementptr inbounds i16, i16* %vla_arr_ptr, i32 %tmpVar - %load_tmpVar = load i16, i16* %arr_val, align 2 - store i16 %load_tmpVar, i16* %foo, align 2 - %foo_ret = load i16, i16* %foo, align 2 + %load_tmpVar = load i16, i16* %arr_val, align [filtered] + store i16 %load_tmpVar, i16* %foo, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret } define i32 @main() { entry: - %main = alloca i32, align 4 - %arr = alloca [2 x i16], align 2 + %main = alloca i32, align [filtered] + %arr = alloca [2 x i16], align [filtered] %0 = bitcast [2 x i16]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([2 x i16]* getelementptr ([2 x i16], [2 x i16]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 - %auto_deref = load [2 x i16], [2 x i16]* %arr, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([2 x i16]* getelementptr ([2 x i16], [2 x i16]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] + %auto_deref = load [2 x i16], [2 x i16]* %arr, align [filtered] %outer_arr_gep = getelementptr inbounds [2 x i16], [2 x i16]* %arr, i32 0, i32 0 - %vla_struct = alloca %__foo_vla, align 8 + %vla_struct = alloca %__foo_vla, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 1 - store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align 4 - store i16* %outer_arr_gep, i16** %vla_array_gep, align 8 - %1 = load %__foo_vla, %__foo_vla* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_vla, align 8 - store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align 8 + store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align [filtered] + store i16* %outer_arr_gep, i16** %vla_array_gep, align [filtered] + %1 = load %__foo_vla, %__foo_vla* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_vla, align [filtered] + store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align [filtered] %call = call i16 @foo(%__foo_vla* %vla_struct_ptr) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_expr.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_expr.snap index d9a4105669c..233c64702a1 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_expr.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_expr.snap @@ -13,50 +13,50 @@ target triple = "[filtered]" define i16 @foo(%__foo_vla* %0) { entry: - %foo = alloca i16, align 2 - %vla = alloca %__foo_vla, align 8 + %foo = alloca i16, align [filtered] + %vla = alloca %__foo_vla, align [filtered] %1 = bitcast %__foo_vla* %vla to i8* %2 = bitcast %__foo_vla* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) - %i = alloca i32, align 4 - store i32 0, i32* %i, align 4 - store i16 0, i16* %foo, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) + %i = alloca i32, align [filtered] + store i32 0, i32* %i, align [filtered] + store i16 0, i16* %foo, align [filtered] %vla_arr_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 0 - %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align 8 + %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align [filtered] %dim_arr = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 1 %start_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 0 %end_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 1 - %start_idx_value0 = load i32, i32* %start_idx_ptr0, align 4 - %end_idx_value0 = load i32, i32* %end_idx_ptr0, align 4 - %load_i = load i32, i32* %i, align 4 + %start_idx_value0 = load i32, i32* %start_idx_ptr0, align [filtered] + %end_idx_value0 = load i32, i32* %end_idx_ptr0, align [filtered] + %load_i = load i32, i32* %i, align [filtered] %tmpVar = add i32 %load_i, 1 %tmpVar1 = sub i32 %tmpVar, %start_idx_value0 %arr_val = getelementptr inbounds i16, i16* %vla_arr_ptr, i32 %tmpVar1 - %load_tmpVar = load i16, i16* %arr_val, align 2 - store i16 %load_tmpVar, i16* %foo, align 2 - %foo_ret = load i16, i16* %foo, align 2 + %load_tmpVar = load i16, i16* %arr_val, align [filtered] + store i16 %load_tmpVar, i16* %foo, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret } define i32 @main() { entry: - %main = alloca i32, align 4 - %arr = alloca [2 x i16], align 2 + %main = alloca i32, align [filtered] + %arr = alloca [2 x i16], align [filtered] %0 = bitcast [2 x i16]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([2 x i16]* getelementptr ([2 x i16], [2 x i16]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 - %auto_deref = load [2 x i16], [2 x i16]* %arr, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([2 x i16]* getelementptr ([2 x i16], [2 x i16]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] + %auto_deref = load [2 x i16], [2 x i16]* %arr, align [filtered] %outer_arr_gep = getelementptr inbounds [2 x i16], [2 x i16]* %arr, i32 0, i32 0 - %vla_struct = alloca %__foo_vla, align 8 + %vla_struct = alloca %__foo_vla, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 1 - store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align 4 - store i16* %outer_arr_gep, i16** %vla_array_gep, align 8 - %1 = load %__foo_vla, %__foo_vla* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_vla, align 8 - store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align 8 + store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align [filtered] + store i16* %outer_arr_gep, i16** %vla_array_gep, align [filtered] + %1 = load %__foo_vla, %__foo_vla* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_vla, align [filtered] + store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align [filtered] %call = call i16 @foo(%__foo_vla* %vla_struct_ptr) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_lint.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_lint.snap index 44189ea120c..48cf5098406 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_lint.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_lint.snap @@ -13,46 +13,46 @@ target triple = "[filtered]" define i16 @foo(%__foo_vla* %0) { entry: - %foo = alloca i16, align 2 - %vla = alloca %__foo_vla, align 8 + %foo = alloca i16, align [filtered] + %vla = alloca %__foo_vla, align [filtered] %1 = bitcast %__foo_vla* %vla to i8* %2 = bitcast %__foo_vla* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) - store i16 0, i16* %foo, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) + store i16 0, i16* %foo, align [filtered] %vla_arr_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 0 - %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align 8 + %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align [filtered] %dim_arr = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 1 %start_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 0 %end_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 1 - %start_idx_value0 = load i32, i32* %start_idx_ptr0, align 4 - %end_idx_value0 = load i32, i32* %end_idx_ptr0, align 4 + %start_idx_value0 = load i32, i32* %start_idx_ptr0, align [filtered] + %end_idx_value0 = load i32, i32* %end_idx_ptr0, align [filtered] %tmpVar = sub i32 0, %start_idx_value0 %arr_val = getelementptr inbounds i16, i16* %vla_arr_ptr, i32 %tmpVar - %load_tmpVar = load i16, i16* %arr_val, align 2 - store i16 %load_tmpVar, i16* %foo, align 2 - %foo_ret = load i16, i16* %foo, align 2 + %load_tmpVar = load i16, i16* %arr_val, align [filtered] + store i16 %load_tmpVar, i16* %foo, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret } define i32 @main() { entry: - %main = alloca i32, align 4 - %arr = alloca [2 x i16], align 2 + %main = alloca i32, align [filtered] + %arr = alloca [2 x i16], align [filtered] %0 = bitcast [2 x i16]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([2 x i16]* getelementptr ([2 x i16], [2 x i16]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 - %auto_deref = load [2 x i16], [2 x i16]* %arr, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([2 x i16]* getelementptr ([2 x i16], [2 x i16]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] + %auto_deref = load [2 x i16], [2 x i16]* %arr, align [filtered] %outer_arr_gep = getelementptr inbounds [2 x i16], [2 x i16]* %arr, i32 0, i32 0 - %vla_struct = alloca %__foo_vla, align 8 + %vla_struct = alloca %__foo_vla, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 1 - store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align 4 - store i16* %outer_arr_gep, i16** %vla_array_gep, align 8 - %1 = load %__foo_vla, %__foo_vla* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_vla, align 8 - store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align 8 + store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align [filtered] + store i16* %outer_arr_gep, i16** %vla_array_gep, align [filtered] + %1 = load %__foo_vla, %__foo_vla* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_vla, align [filtered] + store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align [filtered] %call = call i16 @foo(%__foo_vla* %vla_struct_ptr) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_var.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_var.snap index 84acd5dafa4..5e4b90ccb60 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_var.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__vla_tests__vla_read_access_with_var.snap @@ -13,49 +13,49 @@ target triple = "[filtered]" define i16 @foo(%__foo_vla* %0) { entry: - %foo = alloca i16, align 2 - %vla = alloca %__foo_vla, align 8 + %foo = alloca i16, align [filtered] + %vla = alloca %__foo_vla, align [filtered] %1 = bitcast %__foo_vla* %vla to i8* %2 = bitcast %__foo_vla* %0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) - %i = alloca i32, align 4 - store i32 0, i32* %i, align 4 - store i16 0, i16* %foo, align 2 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%__foo_vla* getelementptr (%__foo_vla, %__foo_vla* null, i32 1) to i64), i1 false) + %i = alloca i32, align [filtered] + store i32 0, i32* %i, align [filtered] + store i16 0, i16* %foo, align [filtered] %vla_arr_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 0 - %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align 8 + %vla_arr_ptr = load i16*, i16** %vla_arr_gep, align [filtered] %dim_arr = getelementptr inbounds %__foo_vla, %__foo_vla* %vla, i32 0, i32 1 %start_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 0 %end_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 1 - %start_idx_value0 = load i32, i32* %start_idx_ptr0, align 4 - %end_idx_value0 = load i32, i32* %end_idx_ptr0, align 4 - %load_i = load i32, i32* %i, align 4 + %start_idx_value0 = load i32, i32* %start_idx_ptr0, align [filtered] + %end_idx_value0 = load i32, i32* %end_idx_ptr0, align [filtered] + %load_i = load i32, i32* %i, align [filtered] %tmpVar = sub i32 %load_i, %start_idx_value0 %arr_val = getelementptr inbounds i16, i16* %vla_arr_ptr, i32 %tmpVar - %load_tmpVar = load i16, i16* %arr_val, align 2 - store i16 %load_tmpVar, i16* %foo, align 2 - %foo_ret = load i16, i16* %foo, align 2 + %load_tmpVar = load i16, i16* %arr_val, align [filtered] + store i16 %load_tmpVar, i16* %foo, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret } define i32 @main() { entry: - %main = alloca i32, align 4 - %arr = alloca [2 x i16], align 2 + %main = alloca i32, align [filtered] + %arr = alloca [2 x i16], align [filtered] %0 = bitcast [2 x i16]* %arr to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([2 x i16]* getelementptr ([2 x i16], [2 x i16]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 - %auto_deref = load [2 x i16], [2 x i16]* %arr, align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([2 x i16]* getelementptr ([2 x i16], [2 x i16]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] + %auto_deref = load [2 x i16], [2 x i16]* %arr, align [filtered] %outer_arr_gep = getelementptr inbounds [2 x i16], [2 x i16]* %arr, i32 0, i32 0 - %vla_struct = alloca %__foo_vla, align 8 + %vla_struct = alloca %__foo_vla, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_vla, %__foo_vla* %vla_struct, i32 0, i32 1 - store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align 4 - store i16* %outer_arr_gep, i16** %vla_array_gep, align 8 - %1 = load %__foo_vla, %__foo_vla* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_vla, align 8 - store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align 8 + store [2 x i32] [i32 0, i32 1], [2 x i32]* %vla_dimensions_gep, align [filtered] + store i16* %outer_arr_gep, i16** %vla_array_gep, align [filtered] + %1 = load %__foo_vla, %__foo_vla* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_vla, align [filtered] + store %__foo_vla %1, %__foo_vla* %vla_struct_ptr, align [filtered] %call = call i16 @foo(%__foo_vla* %vla_struct_ptr) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/src/codegen/tests/statement_codegen_test.rs b/src/codegen/tests/statement_codegen_test.rs index 15be6329f6a..cbd53a2467d 100644 --- a/src/codegen/tests/statement_codegen_test.rs +++ b/src/codegen/tests/statement_codegen_test.rs @@ -209,11 +209,11 @@ fn ref_assignment() { define void @main() { entry: - %a = alloca i32*, align 8 - %b = alloca i32, align 4 - store i32* null, i32** %a, align 8 - store i32 0, i32* %b, align 4 - store i32* %b, i32** %a, align 8 + %a = alloca i32*, align [filtered] + %b = alloca i32, align [filtered] + store i32* null, i32** %a, align [filtered] + store i32 0, i32* %b, align [filtered] + store i32* %b, i32** %a, align [filtered] ret void } "#); @@ -240,9 +240,9 @@ fn ref_assignment_to_null() { define void @main() { entry: - %a = alloca i32*, align 8 - store i32* null, i32** %a, align 8 - store i32 0, i32** %a, align 4 + %a = alloca i32*, align [filtered] + store i32* null, i32** %a, align [filtered] + store i32 0, i32** %a, align [filtered] ret void } "#); @@ -283,10 +283,10 @@ fn reference_to_assignment() { define void @main() { entry: - %a = alloca i32*, align 8 - store i32* null, i32** %a, align 8 - %deref = load i32*, i32** %a, align 8 - store i32 5, i32* %deref, align 4 + %a = alloca i32*, align [filtered] + store i32* null, i32** %a, align [filtered] + %deref = load i32*, i32** %a, align [filtered] + store i32 5, i32* %deref, align [filtered] ret void } "#); @@ -330,11 +330,11 @@ fn reference_to_string_assignment() { define void @main() { entry: - %a = alloca [81 x i8]*, align 8 - store [81 x i8]* null, [81 x i8]** %a, align 8 - %deref = load [81 x i8]*, [81 x i8]** %a, align 8 + %a = alloca [81 x i8]*, align [filtered] + store [81 x i8]* null, [81 x i8]** %a, align [filtered] + %deref = load [81 x i8]*, [81 x i8]** %a, align [filtered] %0 = bitcast [81 x i8]* %deref to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %0, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %0, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) ret void } @@ -366,10 +366,10 @@ fn local_alias() { define void @main() { entry: - %foo = alloca i32*, align 8 - %bar = alloca i32, align 4 - store i32* null, i32** %foo, align 8 - store i32 0, i32* %bar, align 4 + %foo = alloca i32*, align [filtered] + %bar = alloca i32, align [filtered] + store i32* null, i32** %foo, align [filtered] + store i32 0, i32* %bar, align [filtered] ret void } "#); @@ -396,11 +396,11 @@ fn local_string_alias() { define void @main() { entry: - %foo = alloca [81 x i8]*, align 8 - %bar = alloca [81 x i8], align 1 - store [81 x i8]* null, [81 x i8]** %foo, align 8 + %foo = alloca [81 x i8]*, align [filtered] + %bar = alloca [81 x i8], align [filtered] + store [81 x i8]* null, [81 x i8]** %foo, align [filtered] %0 = bitcast [81 x i8]* %bar to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) ret void } diff --git a/src/codegen/tests/typesystem_test.rs b/src/codegen/tests/typesystem_test.rs index 3928ec0a6f1..21dc20c5045 100644 --- a/src/codegen/tests/typesystem_test.rs +++ b/src/codegen/tests/typesystem_test.rs @@ -351,13 +351,13 @@ fn self_referential_struct_via_reference_codegen() { %node1 = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %node2 = getelementptr inbounds %main, %main* %0, i32 0, i32 1 %data = getelementptr inbounds %Node, %Node* %node1, i32 0, i32 0 - store i32 42, i32* %data, align 4 + store i32 42, i32* %data, align [filtered] %data1 = getelementptr inbounds %Node, %Node* %node2, i32 0, i32 0 - store i32 84, i32* %data1, align 4 + store i32 84, i32* %data1, align [filtered] %next = getelementptr inbounds %Node, %Node* %node1, i32 0, i32 1 - store %Node* %node2, %Node** %next, align 8 + store %Node* %node2, %Node** %next, align [filtered] %next2 = getelementptr inbounds %Node, %Node* %node2, i32 0, i32 1 - store %Node* %node1, %Node** %next2, align 8 + store %Node* %node1, %Node** %next2, align [filtered] ret void } "#); diff --git a/src/tests/adr/arrays_adr.rs b/src/tests/adr/arrays_adr.rs index ee3e5a1fbcc..5856169b10e 100644 --- a/src/tests/adr/arrays_adr.rs +++ b/src/tests/adr/arrays_adr.rs @@ -85,7 +85,7 @@ fn assigning_full_arrays() { %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %1 = bitcast [10 x i32]* %a to i8* %2 = bitcast [10 x i32]* %b to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint ([10 x i32]* getelementptr ([10 x i32], [10 x i32]* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint ([10 x i32]* getelementptr ([10 x i32], [10 x i32]* null, i32 1) to i64), i1 false) ret void } @@ -140,8 +140,8 @@ fn accessing_array_elements() { %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %tmpVar = getelementptr inbounds [10 x i32], [10 x i32]* %a, i32 0, i32 2 %tmpVar1 = getelementptr inbounds [3 x i32], [3 x i32]* %b, i32 0, i32 1 - %load_tmpVar = load i32, i32* %tmpVar1, align 4 - store i32 %load_tmpVar, i32* %tmpVar, align 4 + %load_tmpVar = load i32, i32* %tmpVar1, align [filtered] + store i32 %load_tmpVar, i32* %tmpVar, align [filtered] ret void } "#); diff --git a/src/tests/adr/enum_adr.rs b/src/tests/adr/enum_adr.rs index 57d490b2df9..ee2aba28627 100644 --- a/src/tests/adr/enum_adr.rs +++ b/src/tests/adr/enum_adr.rs @@ -142,9 +142,9 @@ fn using_enums() { %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %y = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 2 - store i32 5, i32* %x, align 4 - store i32 4, i32* %y, align 4 - store i32 16, i32* %z, align 4 + store i32 5, i32* %x, align [filtered] + store i32 4, i32* %y, align [filtered] + store i32 16, i32* %z, align [filtered] ret void } "#); diff --git a/src/tests/adr/initializer_functions_adr.rs b/src/tests/adr/initializer_functions_adr.rs index 82aac474dfd..64ce3832aca 100644 --- a/src/tests/adr/initializer_functions_adr.rs +++ b/src/tests/adr/initializer_functions_adr.rs @@ -672,29 +672,29 @@ fn generating_init_functions() { define void @__init_mystruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__init_myrefstruct(%myRefStruct* %0) { entry: - %self = alloca %myRefStruct*, align 8 - store %myRefStruct* %0, %myRefStruct** %self, align 8 + %self = alloca %myRefStruct*, align [filtered] + store %myRefStruct* %0, %myRefStruct** %self, align [filtered] ret void } define void @__user_init_myStruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__user_init_myRefStruct(%myRefStruct* %0) { entry: - %self = alloca %myRefStruct*, align 8 - store %myRefStruct* %0, %myRefStruct** %self, align 8 + %self = alloca %myRefStruct*, align [filtered] + store %myRefStruct* %0, %myRefStruct** %self, align [filtered] ret void } @@ -764,8 +764,8 @@ fn generating_init_functions() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %ps = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 ret void @@ -773,8 +773,8 @@ fn generating_init_functions() { define void @bar(%bar* %0) { entry: - %this = alloca %bar*, align 8 - store %bar* %0, %bar** %this, align 8 + %this = alloca %bar*, align [filtered] + store %bar* %0, %bar** %this, align [filtered] %__vtable = getelementptr inbounds %bar, %bar* %0, i32 0, i32 0 %fb = getelementptr inbounds %bar, %bar* %0, i32 0, i32 1 ret void @@ -788,62 +788,62 @@ fn generating_init_functions() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 - %deref = load %__vtable_bar*, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] + %deref = load %__vtable_bar*, %__vtable_bar** %self, align [filtered] %__body = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref, i32 0, i32 0 - store void (%bar*)* @bar, void (%bar*)** %__body, align 8 + store void (%bar*)* @bar, void (%bar*)** %__body, align [filtered] ret void } define void @__init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %fb = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 1 call void @__init_foo(%foo* %fb) - %deref1 = load %bar*, %bar** %self, align 8 + %deref1 = load %bar*, %bar** %self, align [filtered] %__vtable = getelementptr inbounds %bar, %bar* %deref1, i32 0, i32 0 - store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 - %deref1 = load %foo*, %foo** %self, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] + %deref1 = load %foo*, %foo** %self, align [filtered] %ps = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 1 - store %myStruct* @s, %myStruct** %ps, align 8 + store %myStruct* @s, %myStruct** %ps, align [filtered] ret void } define void @__init_mystruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } define void @__init_baz(%baz* %0) { entry: - %self = alloca %baz*, align 8 - store %baz* %0, %baz** %self, align 8 - %deref = load %baz*, %baz** %self, align 8 + %self = alloca %baz*, align [filtered] + store %baz* %0, %baz** %self, align [filtered] + %deref = load %baz*, %baz** %self, align [filtered] %fb = getelementptr inbounds %baz, %baz* %deref, i32 0, i32 0 call void @__init_bar(%bar* %fb) ret void @@ -851,23 +851,23 @@ fn generating_init_functions() { define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init___vtable_bar(%__vtable_bar* %0) { entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 + %self = alloca %__vtable_bar*, align [filtered] + store %__vtable_bar* %0, %__vtable_bar** %self, align [filtered] ret void } define void @__user_init_baz(%baz* %0) { entry: - %self = alloca %baz*, align 8 - store %baz* %0, %baz** %self, align 8 - %deref = load %baz*, %baz** %self, align 8 + %self = alloca %baz*, align [filtered] + store %baz* %0, %baz** %self, align [filtered] + %deref = load %baz*, %baz** %self, align [filtered] %fb = getelementptr inbounds %baz, %baz* %deref, i32 0, i32 0 call void @__user_init_bar(%bar* %fb) ret void @@ -875,9 +875,9 @@ fn generating_init_functions() { define void @__user_init_bar(%bar* %0) { entry: - %self = alloca %bar*, align 8 - store %bar* %0, %bar** %self, align 8 - %deref = load %bar*, %bar** %self, align 8 + %self = alloca %bar*, align [filtered] + store %bar* %0, %bar** %self, align [filtered] + %deref = load %bar*, %bar** %self, align [filtered] %fb = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 1 call void @__user_init_foo(%foo* %fb) ret void @@ -885,15 +885,15 @@ fn generating_init_functions() { define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__user_init_myStruct(%myStruct* %0) { entry: - %self = alloca %myStruct*, align 8 - store %myStruct* %0, %myStruct** %self, align 8 + %self = alloca %myStruct*, align [filtered] + store %myStruct* %0, %myStruct** %self, align [filtered] ret void } @@ -963,33 +963,33 @@ fn intializing_temporary_variables() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %s = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 - %s2 = alloca [81 x i8]*, align 8 - store [81 x i8]* @ps2, [81 x i8]** %s2, align 8 - store [81 x i8]* @ps2, [81 x i8]** %s2, align 8 + %s2 = alloca [81 x i8]*, align [filtered] + store [81 x i8]* @ps2, [81 x i8]** %s2, align [filtered] + store [81 x i8]* @ps2, [81 x i8]** %s2, align [filtered] ret void } define i32 @main() { entry: - %main = alloca i32, align 4 - %fb = alloca %foo, align 8 - %s = alloca [81 x i8]*, align 8 - %s2 = alloca [81 x i8]*, align 8 + %main = alloca i32, align [filtered] + %fb = alloca %foo, align [filtered] + %s = alloca [81 x i8]*, align [filtered] + %s2 = alloca [81 x i8]*, align [filtered] %0 = bitcast %foo* %fb to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) - store [81 x i8]* null, [81 x i8]** %s, align 8 - store [81 x i8]* @ps2, [81 x i8]** %s2, align 8 - store i32 0, i32* %main, align 4 - store [81 x i8]* @ps, [81 x i8]** %s, align 8 - store [81 x i8]* @ps2, [81 x i8]** %s2, align 8 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) + store [81 x i8]* null, [81 x i8]** %s, align [filtered] + store [81 x i8]* @ps2, [81 x i8]** %s2, align [filtered] + store i32 0, i32* %main, align [filtered] + store [81 x i8]* @ps, [81 x i8]** %s, align [filtered] + store [81 x i8]* @ps2, [81 x i8]** %s2, align [filtered] call void @__init_foo(%foo* %fb) call void @__user_init_foo(%foo* %fb) call void @foo(%foo* %fb) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } @@ -998,38 +998,38 @@ fn intializing_temporary_variables() { define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 - %deref1 = load %foo*, %foo** %self, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] + %deref1 = load %foo*, %foo** %self, align [filtered] %s = getelementptr inbounds %foo, %foo* %deref1, i32 0, i32 1 - store [81 x i8]* @ps, [81 x i8]** %s, align 8 + store [81 x i8]* @ps, [81 x i8]** %s, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -1080,59 +1080,59 @@ fn initializing_method_variables() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 ret void } define void @foo__bar(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 - %x = alloca i32, align 4 - %px = alloca i32*, align 8 - store i32 10, i32* %x, align 4 - store i32* %x, i32** %px, align 8 - store i32* %x, i32** %px, align 8 + %x = alloca i32, align [filtered] + %px = alloca i32*, align [filtered] + store i32 10, i32* %x, align [filtered] + store i32* %x, i32** %px, align [filtered] + store i32* %x, i32** %px, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %bar = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__bar, void (%foo*)** %bar, align 8 + store void (%foo*)* @foo__bar, void (%foo*)** %bar, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -1188,8 +1188,8 @@ fn initializing_method_variables() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 ret void @@ -1197,65 +1197,65 @@ fn initializing_method_variables() { define void @foo__bar(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 - %px = alloca i32*, align 8 - store i32* %x, i32** %px, align 8 - store i32* %x, i32** %px, align 8 + %px = alloca i32*, align [filtered] + store i32* %x, i32** %px, align [filtered] + store i32* %x, i32** %px, align [filtered] ret void } define void @foo__baz(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 - %px = alloca i32*, align 8 - store i32* @y, i32** %px, align 8 - store i32* @y, i32** %px, align 8 + %px = alloca i32*, align [filtered] + store i32* @y, i32** %px, align [filtered] + store i32* @y, i32** %px, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %bar = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__bar, void (%foo*)** %bar, align 8 - %deref2 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo__bar, void (%foo*)** %bar, align [filtered] + %deref2 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %baz = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref2, i32 0, i32 2 - store void (%foo*)* @foo__baz, void (%foo*)** %baz, align 8 + store void (%foo*)* @foo__baz, void (%foo*)** %baz, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } @@ -1300,8 +1300,8 @@ fn initializing_method_variables() { define void @foo(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 ret void @@ -1309,52 +1309,52 @@ fn initializing_method_variables() { define void @foo__bar(%foo* %0) { entry: - %this = alloca %foo*, align 8 - store %foo* %0, %foo** %this, align 8 + %this = alloca %foo*, align [filtered] + store %foo* %0, %foo** %this, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %0, i32 0, i32 0 %x = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 - %x1 = alloca i32, align 4 - %px = alloca i32*, align 8 - store i32 10, i32* %x1, align 4 - store i32* %x1, i32** %px, align 8 - store i32* %x1, i32** %px, align 8 + %x1 = alloca i32, align [filtered] + %px = alloca i32*, align [filtered] + store i32 10, i32* %x1, align [filtered] + store i32* %x1, i32** %px, align [filtered] + store i32* %x1, i32** %px, align [filtered] ret void } define void @__init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 - %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] + %deref = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 - store void (%foo*)* @foo, void (%foo*)** %__body, align 8 - %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + store void (%foo*)* @foo, void (%foo*)** %__body, align [filtered] + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align [filtered] %bar = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 - store void (%foo*)* @foo__bar, void (%foo*)** %bar, align 8 + store void (%foo*)* @foo__bar, void (%foo*)** %bar, align [filtered] ret void } define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 - %deref = load %foo*, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] + %deref = load %foo*, %foo** %self, align [filtered] %__vtable = getelementptr inbounds %foo, %foo* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_foo* @__vtable_foo_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_foo(%__vtable_foo* %0) { entry: - %self = alloca %__vtable_foo*, align 8 - store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %self = alloca %__vtable_foo*, align [filtered] + store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } diff --git a/src/tests/adr/pou_adr.rs b/src/tests/adr/pou_adr.rs index ac1ef8c7069..e1d797ca4d1 100644 --- a/src/tests/adr/pou_adr.rs +++ b/src/tests/adr/pou_adr.rs @@ -205,8 +205,8 @@ fn codegen_of_a_program_pou() { %io = getelementptr inbounds %main_prg, %main_prg* %0, i32 0, i32 1 %o = getelementptr inbounds %main_prg, %main_prg* %0, i32 0, i32 2 %v = getelementptr inbounds %main_prg, %main_prg* %0, i32 0, i32 3 - %vt = alloca i16, align 2 - store i16 0, i16* %vt, align 2 + %vt = alloca i16, align [filtered] + store i16 0, i16* %vt, align [filtered] ret void } "#); @@ -241,18 +241,18 @@ fn calling_a_program() { define i16 @foo() { entry: - %foo = alloca i16, align 2 - %x = alloca i16, align 2 - %y = alloca i16, align 2 - store i16 0, i16* %x, align 2 - store i16 0, i16* %y, align 2 - store i16 0, i16* %foo, align 2 - store i16 1, i16* getelementptr inbounds (%main_prg, %main_prg* @main_prg_instance, i32 0, i32 0), align 2 - store i16* %y, i16** getelementptr inbounds (%main_prg, %main_prg* @main_prg_instance, i32 0, i32 1), align 8 + %foo = alloca i16, align [filtered] + %x = alloca i16, align [filtered] + %y = alloca i16, align [filtered] + store i16 0, i16* %x, align [filtered] + store i16 0, i16* %y, align [filtered] + store i16 0, i16* %foo, align [filtered] + store i16 1, i16* getelementptr inbounds (%main_prg, %main_prg* @main_prg_instance, i32 0, i32 0), align [filtered] + store i16* %y, i16** getelementptr inbounds (%main_prg, %main_prg* @main_prg_instance, i32 0, i32 1), align [filtered] call void @main_prg(%main_prg* @main_prg_instance) - %0 = load i16, i16* getelementptr inbounds (%main_prg, %main_prg* @main_prg_instance, i32 0, i32 2), align 2 - store i16 %0, i16* %x, align 2 - %foo_ret = load i16, i16* %foo, align 2 + %0 = load i16, i16* getelementptr inbounds (%main_prg, %main_prg* @main_prg_instance, i32 0, i32 2), align [filtered] + store i16 %0, i16* %x, align [filtered] + %foo_ret = load i16, i16* %foo, align [filtered] ret i16 %foo_ret } @@ -262,8 +262,8 @@ fn calling_a_program() { %io = getelementptr inbounds %main_prg, %main_prg* %0, i32 0, i32 1 %o = getelementptr inbounds %main_prg, %main_prg* %0, i32 0, i32 2 %v = getelementptr inbounds %main_prg, %main_prg* %0, i32 0, i32 3 - %vt = alloca i16, align 2 - store i16 0, i16* %vt, align 2 + %vt = alloca i16, align [filtered] + store i16 0, i16* %vt, align [filtered] ret void } "#); @@ -306,14 +306,14 @@ fn function_blocks_get_a_method_with_a_self_parameter() { define void @main_fb(%main_fb* %0) { entry: - %this = alloca %main_fb*, align 8 - store %main_fb* %0, %main_fb** %this, align 8 + %this = alloca %main_fb*, align [filtered] + store %main_fb* %0, %main_fb** %this, align [filtered] %i = getelementptr inbounds %main_fb, %main_fb* %0, i32 0, i32 0 %io = getelementptr inbounds %main_fb, %main_fb* %0, i32 0, i32 1 %o = getelementptr inbounds %main_fb, %main_fb* %0, i32 0, i32 2 %v = getelementptr inbounds %main_fb, %main_fb* %0, i32 0, i32 3 - %vt = alloca i16, align 2 - store i16 2, i16* %vt, align 2 + %vt = alloca i16, align [filtered] + store i16 2, i16* %vt, align [filtered] ret void } "#); @@ -355,26 +355,26 @@ fn calling_a_function_block() { %y = getelementptr inbounds %foo, %foo* %0, i32 0, i32 1 %fb = getelementptr inbounds %foo, %foo* %0, i32 0, i32 2 %1 = getelementptr inbounds %main_fb, %main_fb* %fb, i32 0, i32 0 - store i16 1, i16* %1, align 2 + store i16 1, i16* %1, align [filtered] %2 = getelementptr inbounds %main_fb, %main_fb* %fb, i32 0, i32 1 - store i16* %y, i16** %2, align 8 + store i16* %y, i16** %2, align [filtered] call void @main_fb(%main_fb* %fb) %3 = getelementptr inbounds %main_fb, %main_fb* %fb, i32 0, i32 2 - %4 = load i16, i16* %3, align 2 - store i16 %4, i16* %x, align 2 + %4 = load i16, i16* %3, align [filtered] + store i16 %4, i16* %x, align [filtered] ret void } define void @main_fb(%main_fb* %0) { entry: - %this = alloca %main_fb*, align 8 - store %main_fb* %0, %main_fb** %this, align 8 + %this = alloca %main_fb*, align [filtered] + store %main_fb* %0, %main_fb** %this, align [filtered] %i = getelementptr inbounds %main_fb, %main_fb* %0, i32 0, i32 0 %io = getelementptr inbounds %main_fb, %main_fb* %0, i32 0, i32 1 %o = getelementptr inbounds %main_fb, %main_fb* %0, i32 0, i32 2 %v = getelementptr inbounds %main_fb, %main_fb* %0, i32 0, i32 3 - %vt = alloca i16, align 2 - store i16 2, i16* %vt, align 2 + %vt = alloca i16, align [filtered] + store i16 2, i16* %vt, align [filtered] ret void } "#); @@ -407,19 +407,19 @@ fn function_get_a_method_with_by_ref_parameters() { define i32 @main_fun(i16 %0, i8* %1, i64* %2) { entry: - %main_fun = alloca i32, align 4 - %i = alloca i16, align 2 - store i16 %0, i16* %i, align 2 - %io = alloca i8*, align 8 - store i8* %1, i8** %io, align 8 - %o = alloca i64*, align 8 - store i64* %2, i64** %o, align 8 - %v = alloca i16, align 2 - %vt = alloca i16, align 2 - store i16 1, i16* %v, align 2 - store i16 2, i16* %vt, align 2 - store i32 0, i32* %main_fun, align 4 - %main_fun_ret = load i32, i32* %main_fun, align 4 + %main_fun = alloca i32, align [filtered] + %i = alloca i16, align [filtered] + store i16 %0, i16* %i, align [filtered] + %io = alloca i8*, align [filtered] + store i8* %1, i8** %io, align [filtered] + %o = alloca i64*, align [filtered] + store i64* %2, i64** %o, align [filtered] + %v = alloca i16, align [filtered] + %vt = alloca i16, align [filtered] + store i16 1, i16* %v, align [filtered] + store i16 2, i16* %vt, align [filtered] + store i32 0, i32* %main_fun, align [filtered] + %main_fun_ret = load i32, i32* %main_fun, align [filtered] ret i32 %main_fun_ret } "#); @@ -457,27 +457,27 @@ fn calling_a_function() { entry: %x = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %z = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 - %load_x = load i16, i16* %x, align 2 - %1 = alloca i64, align 8 + %load_x = load i16, i16* %x, align [filtered] + %1 = alloca i64, align [filtered] %call = call i32 @main_fun(i16 %load_x, i8* %z, i64* %1) ret void } define i32 @main_fun(i16 %0, i8* %1, i64* %2) { entry: - %main_fun = alloca i32, align 4 - %i = alloca i16, align 2 - store i16 %0, i16* %i, align 2 - %io = alloca i8*, align 8 - store i8* %1, i8** %io, align 8 - %o = alloca i64*, align 8 - store i64* %2, i64** %o, align 8 - %v = alloca i16, align 2 - %vt = alloca i16, align 2 - store i16 1, i16* %v, align 2 - store i16 2, i16* %vt, align 2 - store i32 0, i32* %main_fun, align 4 - %main_fun_ret = load i32, i32* %main_fun, align 4 + %main_fun = alloca i32, align [filtered] + %i = alloca i16, align [filtered] + store i16 %0, i16* %i, align [filtered] + %io = alloca i8*, align [filtered] + store i8* %1, i8** %io, align [filtered] + %o = alloca i64*, align [filtered] + store i64* %2, i64** %o, align [filtered] + %v = alloca i16, align [filtered] + %vt = alloca i16, align [filtered] + store i16 1, i16* %v, align [filtered] + store i16 2, i16* %vt, align [filtered] + store i32 0, i32* %main_fun, align [filtered] + %main_fun_ret = load i32, i32* %main_fun, align [filtered] ret i32 %main_fun_ret } "#); @@ -520,24 +520,24 @@ fn return_a_complex_type_from_function() { define void @foo(i8* %0) { entry: - %foo = alloca i8*, align 8 - store i8* %0, i8** %foo, align 8 - %deref = load i8*, i8** %foo, align 8 - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %deref, i8* align 1 getelementptr inbounds ([13 x i8], [13 x i8]* @utf08_literal_0, i32 0, i32 0), i32 13, i1 false) + %foo = alloca i8*, align [filtered] + store i8* %0, i8** %foo, align [filtered] + %deref = load i8*, i8** %foo, align [filtered] + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %deref, i8* align [filtered] getelementptr inbounds ([13 x i8], [13 x i8]* @utf08_literal_0, i32 0, i32 0), i32 13, i1 false) ret void } define void @prg(%prg* %0) { entry: %s = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 - %__foo0 = alloca [81 x i8], align 1 + %__foo0 = alloca [81 x i8], align [filtered] %1 = bitcast [81 x i8]* %__foo0 to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false) %2 = bitcast [81 x i8]* %__foo0 to i8* call void @foo(i8* %2) %3 = bitcast [81 x i8]* %s to i8* %4 = bitcast [81 x i8]* %__foo0 to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 %4, i32 80, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %3, i8* align [filtered] %4, i32 80, i1 false) ret void } @@ -604,26 +604,26 @@ fn passing_aggregate_types_to_functions_by_value() { define void @foo(i8* %0, i16* %1, i32* %2, %myStruct* %3) { entry: - %s = alloca [81 x i8], align 1 + %s = alloca [81 x i8], align [filtered] %bitcast = bitcast [81 x i8]* %s to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %bitcast, i8 0, i64 81, i1 false) - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %bitcast, i8* align 1 %0, i64 80, i1 false) - %ws = alloca [81 x i16], align 2 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %bitcast, i8 0, i64 81, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %bitcast, i8* align [filtered] %0, i64 80, i1 false) + %ws = alloca [81 x i16], align [filtered] %bitcast1 = bitcast [81 x i16]* %ws to i16* %4 = bitcast i16* %bitcast1 to i8* - call void @llvm.memset.p0i8.i64(i8* align 2 %4, i8 0, i64 162, i1 false) + call void @llvm.memset.p0i8.i64(i8* align [filtered] %4, i8 0, i64 162, i1 false) %5 = bitcast i16* %bitcast1 to i8* %6 = bitcast i16* %1 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 2 %5, i8* align 2 %6, i64 160, i1 false) - %arr = alloca [30000 x i32], align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %5, i8* align [filtered] %6, i64 160, i1 false) + %arr = alloca [30000 x i32], align [filtered] %bitcast2 = bitcast [30000 x i32]* %arr to i32* %7 = bitcast i32* %bitcast2 to i8* %8 = bitcast i32* %2 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %7, i8* align 1 %8, i64 ptrtoint ([30000 x i32]* getelementptr ([30000 x i32], [30000 x i32]* null, i32 1) to i64), i1 false) - %st = alloca %myStruct, align 8 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %7, i8* align [filtered] %8, i64 ptrtoint ([30000 x i32]* getelementptr ([30000 x i32], [30000 x i32]* null, i32 1) to i64), i1 false) + %st = alloca %myStruct, align [filtered] %9 = bitcast %myStruct* %st to i8* %10 = bitcast %myStruct* %3 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %9, i8* align 1 %10, i64 ptrtoint (%myStruct* getelementptr (%myStruct, %myStruct* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %9, i8* align [filtered] %10, i64 ptrtoint (%myStruct* getelementptr (%myStruct, %myStruct* null, i32 1) to i64), i1 false) ret void } @@ -690,13 +690,13 @@ fn passing_by_ref_to_functions() { define i8 @StrEqual(i8* %0, i8* %1) { entry: - %StrEqual = alloca i8, align 1 - %o1 = alloca i8*, align 8 - store i8* %0, i8** %o1, align 8 - %o2 = alloca i8*, align 8 - store i8* %1, i8** %o2, align 8 - store i8 0, i8* %StrEqual, align 1 - %StrEqual_ret = load i8, i8* %StrEqual, align 1 + %StrEqual = alloca i8, align [filtered] + %o1 = alloca i8*, align [filtered] + store i8* %0, i8** %o1, align [filtered] + %o2 = alloca i8*, align [filtered] + store i8* %1, i8** %o2, align [filtered] + store i8 0, i8* %StrEqual, align [filtered] + %StrEqual_ret = load i8, i8* %StrEqual, align [filtered] ret i8 %StrEqual_ret } diff --git a/src/tests/adr/strings_adr.rs b/src/tests/adr/strings_adr.rs index 888c98bda76..24b976721e1 100644 --- a/src/tests/adr/strings_adr.rs +++ b/src/tests/adr/strings_adr.rs @@ -82,7 +82,7 @@ fn assigning_strings() { %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %1 = bitcast [11 x i8]* %a to i8* %2 = bitcast [11 x i8]* %b to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 %2, i32 10, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] %2, i32 10, i1 false) ret void } @@ -126,9 +126,9 @@ fn assigning_string_literals() { %a = getelementptr inbounds %prg, %prg* %0, i32 0, i32 0 %b = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %1 = bitcast [11 x i8]* %a to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %1, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %1, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_0, i32 0, i32 0), i32 6, i1 false) %2 = bitcast [11 x i8]* %b to i8* - call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %2, i8* align 1 getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) + call void @llvm.memcpy.p0i8.p0i8.i32(i8* align [filtered] %2, i8* align [filtered] getelementptr inbounds ([6 x i8], [6 x i8]* @utf08_literal_1, i32 0, i32 0), i32 6, i1 false) ret void } diff --git a/src/tests/adr/structs_adr.rs b/src/tests/adr/structs_adr.rs index cda4ae35525..15d64831f5d 100644 --- a/src/tests/adr/structs_adr.rs +++ b/src/tests/adr/structs_adr.rs @@ -160,7 +160,7 @@ fn assigning_structs() { %p2 = getelementptr inbounds %prg, %prg* %0, i32 0, i32 1 %1 = bitcast %Point* %p1 to i8* %2 = bitcast %Point* %p2 to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 %2, i64 ptrtoint (%Point* getelementptr (%Point, %Point* null, i32 1) to i64), i1 false) + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %1, i8* align [filtered] %2, i64 ptrtoint (%Point* getelementptr (%Point, %Point* null, i32 1) to i64), i1 false) ret void } @@ -222,8 +222,8 @@ fn accessing_struct_members() { %x = getelementptr inbounds %Point, %Point* %topLeft, i32 0, i32 0 %bottomRight = getelementptr inbounds %Rect, %Rect* %rect2, i32 0, i32 1 %x1 = getelementptr inbounds %Point, %Point* %bottomRight, i32 0, i32 0 - %load_x = load i16, i16* %x1, align 2 - store i16 %load_x, i16* %x, align 2 + %load_x = load i16, i16* %x1, align [filtered] + store i16 %load_x, i16* %x, align [filtered] ret void } "#); diff --git a/src/tests/adr/vla_adr.rs b/src/tests/adr/vla_adr.rs index 9e8ee65e644..9950b8a50de 100644 --- a/src/tests/adr/vla_adr.rs +++ b/src/tests/adr/vla_adr.rs @@ -320,33 +320,33 @@ fn pass() { define i32 @main() { entry: - %main = alloca i32, align 4 - %local = alloca [6 x i32], align 4 + %main = alloca i32, align [filtered] + %local = alloca [6 x i32], align [filtered] %0 = bitcast [6 x i32]* %local to i8* - call void @llvm.memset.p0i8.i64(i8* align 1 %0, i8 0, i64 ptrtoint ([6 x i32]* getelementptr ([6 x i32], [6 x i32]* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 - %auto_deref = load [6 x i32], [6 x i32]* %local, align 4 + call void @llvm.memset.p0i8.i64(i8* align [filtered] %0, i8 0, i64 ptrtoint ([6 x i32]* getelementptr ([6 x i32], [6 x i32]* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] + %auto_deref = load [6 x i32], [6 x i32]* %local, align [filtered] %outer_arr_gep = getelementptr inbounds [6 x i32], [6 x i32]* %local, i32 0, i32 0 - %vla_struct = alloca %__foo_arr, align 8 + %vla_struct = alloca %__foo_arr, align [filtered] %vla_array_gep = getelementptr inbounds %__foo_arr, %__foo_arr* %vla_struct, i32 0, i32 0 %vla_dimensions_gep = getelementptr inbounds %__foo_arr, %__foo_arr* %vla_struct, i32 0, i32 1 - store [2 x i32] [i32 0, i32 5], [2 x i32]* %vla_dimensions_gep, align 4 - store i32* %outer_arr_gep, i32** %vla_array_gep, align 8 - %1 = load %__foo_arr, %__foo_arr* %vla_struct, align 8 - %vla_struct_ptr = alloca %__foo_arr, align 8 - store %__foo_arr %1, %__foo_arr* %vla_struct_ptr, align 8 + store [2 x i32] [i32 0, i32 5], [2 x i32]* %vla_dimensions_gep, align [filtered] + store i32* %outer_arr_gep, i32** %vla_array_gep, align [filtered] + %1 = load %__foo_arr, %__foo_arr* %vla_struct, align [filtered] + %vla_struct_ptr = alloca %__foo_arr, align [filtered] + store %__foo_arr %1, %__foo_arr* %vla_struct_ptr, align [filtered] %call = call i32 @foo(%__foo_arr* %vla_struct_ptr) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } define i32 @foo(%__foo_arr* %0) { entry: - %foo = alloca i32, align 4 - %arr = alloca %__foo_arr*, align 8 - store %__foo_arr* %0, %__foo_arr** %arr, align 8 - store i32 0, i32* %foo, align 4 - %foo_ret = load i32, i32* %foo, align 4 + %foo = alloca i32, align [filtered] + %arr = alloca %__foo_arr*, align [filtered] + store %__foo_arr* %0, %__foo_arr** %arr, align [filtered] + store i32 0, i32* %foo, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } @@ -388,22 +388,22 @@ fn access() { define i32 @foo(%__foo_arr* %0) { entry: - %foo = alloca i32, align 4 - %arr = alloca %__foo_arr*, align 8 - store %__foo_arr* %0, %__foo_arr** %arr, align 8 - store i32 0, i32* %foo, align 4 - %deref = load %__foo_arr*, %__foo_arr** %arr, align 8 + %foo = alloca i32, align [filtered] + %arr = alloca %__foo_arr*, align [filtered] + store %__foo_arr* %0, %__foo_arr** %arr, align [filtered] + store i32 0, i32* %foo, align [filtered] + %deref = load %__foo_arr*, %__foo_arr** %arr, align [filtered] %vla_arr_gep = getelementptr inbounds %__foo_arr, %__foo_arr* %deref, i32 0, i32 0 - %vla_arr_ptr = load i32*, i32** %vla_arr_gep, align 8 + %vla_arr_ptr = load i32*, i32** %vla_arr_gep, align [filtered] %dim_arr = getelementptr inbounds %__foo_arr, %__foo_arr* %deref, i32 0, i32 1 %start_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 0 %end_idx_ptr0 = getelementptr inbounds [2 x i32], [2 x i32]* %dim_arr, i32 0, i32 1 - %start_idx_value0 = load i32, i32* %start_idx_ptr0, align 4 - %end_idx_value0 = load i32, i32* %end_idx_ptr0, align 4 + %start_idx_value0 = load i32, i32* %start_idx_ptr0, align [filtered] + %end_idx_value0 = load i32, i32* %end_idx_ptr0, align [filtered] %tmpVar = sub i32 0, %start_idx_value0 %arr_val = getelementptr inbounds i32, i32* %vla_arr_ptr, i32 %tmpVar - store i32 12345, i32* %arr_val, align 4 - %foo_ret = load i32, i32* %foo, align 4 + store i32 12345, i32* %arr_val, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } "#); @@ -448,48 +448,48 @@ fn multi_dimensional() { define i32 @foo(%__foo_arr* %0) { entry: - %foo = alloca i32, align 4 - %arr = alloca %__foo_arr*, align 8 - store %__foo_arr* %0, %__foo_arr** %arr, align 8 - store i32 0, i32* %foo, align 4 - %deref = load %__foo_arr*, %__foo_arr** %arr, align 8 + %foo = alloca i32, align [filtered] + %arr = alloca %__foo_arr*, align [filtered] + store %__foo_arr* %0, %__foo_arr** %arr, align [filtered] + store i32 0, i32* %foo, align [filtered] + %deref = load %__foo_arr*, %__foo_arr** %arr, align [filtered] %vla_arr_gep = getelementptr inbounds %__foo_arr, %__foo_arr* %deref, i32 0, i32 0 - %vla_arr_ptr = load i32*, i32** %vla_arr_gep, align 8 + %vla_arr_ptr = load i32*, i32** %vla_arr_gep, align [filtered] %dim_arr = getelementptr inbounds %__foo_arr, %__foo_arr* %deref, i32 0, i32 1 %start_idx_ptr0 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 0 %end_idx_ptr0 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 1 - %start_idx_value0 = load i32, i32* %start_idx_ptr0, align 4 - %end_idx_value0 = load i32, i32* %end_idx_ptr0, align 4 + %start_idx_value0 = load i32, i32* %start_idx_ptr0, align [filtered] + %end_idx_value0 = load i32, i32* %end_idx_ptr0, align [filtered] %start_idx_ptr1 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 2 %end_idx_ptr1 = getelementptr inbounds [4 x i32], [4 x i32]* %dim_arr, i32 0, i32 3 - %start_idx_value1 = load i32, i32* %start_idx_ptr1, align 4 - %end_idx_value1 = load i32, i32* %end_idx_ptr1, align 4 + %start_idx_value1 = load i32, i32* %start_idx_ptr1, align [filtered] + %end_idx_value1 = load i32, i32* %end_idx_ptr1, align [filtered] %1 = sub i32 %end_idx_value0, %start_idx_value0 %len_dim0 = add i32 1, %1 %2 = sub i32 %end_idx_value1, %start_idx_value1 %len_dim1 = add i32 1, %2 - %accum = alloca i32, align 4 - store i32 1, i32* %accum, align 4 - %load_accum = load i32, i32* %accum, align 4 + %accum = alloca i32, align [filtered] + store i32 1, i32* %accum, align [filtered] + %load_accum = load i32, i32* %accum, align [filtered] %product = mul i32 %load_accum, %len_dim1 - store i32 %product, i32* %accum, align 4 - %accessor_factor = load i32, i32* %accum, align 4 + store i32 %product, i32* %accum, align [filtered] + %accessor_factor = load i32, i32* %accum, align [filtered] %adj_access0 = sub i32 0, %start_idx_value0 %adj_access1 = sub i32 1, %start_idx_value1 - %accum1 = alloca i32, align 4 - store i32 0, i32* %accum1, align 4 + %accum1 = alloca i32, align [filtered] + store i32 0, i32* %accum1, align [filtered] %multiply = mul i32 %adj_access0, %accessor_factor - %load_accum2 = load i32, i32* %accum1, align 4 + %load_accum2 = load i32, i32* %accum1, align [filtered] %accumulate = add i32 %load_accum2, %multiply - store i32 %accumulate, i32* %accum1, align 4 + store i32 %accumulate, i32* %accum1, align [filtered] %multiply3 = mul i32 %adj_access1, 1 - %load_accum4 = load i32, i32* %accum1, align 4 + %load_accum4 = load i32, i32* %accum1, align [filtered] %accumulate5 = add i32 %load_accum4, %multiply3 - store i32 %accumulate5, i32* %accum1, align 4 - %accessor = load i32, i32* %accum1, align 4 + store i32 %accumulate5, i32* %accum1, align [filtered] + %accessor = load i32, i32* %accum1, align [filtered] %arr_val = getelementptr inbounds i32, i32* %vla_arr_ptr, i32 %accessor - store i32 12345, i32* %arr_val, align 4 - %foo_ret = load i32, i32* %foo, align 4 + store i32 12345, i32* %arr_val, align [filtered] + %foo_ret = load i32, i32* %foo, align [filtered] ret i32 %foo_ret } "#); diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap index 63647abd3b0..b794311623f 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap @@ -14,7 +14,7 @@ entry: call void @llvm.dbg.declare(metadata %main* %0, metadata !16, metadata !DIExpression()), !dbg !17 %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - store i32 0, i32* %a, align 4, !dbg !18 + store i32 0, i32* %a, align [filtered], !dbg !18 call void @main__newAction(%main* %0), !dbg !17 call void @main__newAction2(%main* %0), !dbg !19 ret void, !dbg !20 @@ -25,9 +25,9 @@ entry: call void @llvm.dbg.declare(metadata %main* %0, metadata !15, metadata !DIExpression()), !dbg !21 %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - %load_a = load i32, i32* %a, align 4, !dbg !21 + %load_a = load i32, i32* %a, align [filtered], !dbg !21 %tmpVar = add i32 %load_a, 1, !dbg !21 - store i32 %tmpVar, i32* %a, align 4, !dbg !21 + store i32 %tmpVar, i32* %a, align [filtered], !dbg !21 ret void, !dbg !22 } @@ -36,9 +36,9 @@ entry: call void @llvm.dbg.declare(metadata %main* %0, metadata !15, metadata !DIExpression()), !dbg !21 %a = getelementptr inbounds %main, %main* %0, i32 0, i32 0 %b = getelementptr inbounds %main, %main* %0, i32 0, i32 1 - %load_b = load i32, i32* %b, align 4, !dbg !23 + %load_b = load i32, i32* %b, align [filtered], !dbg !23 %tmpVar = add i32 %load_b, 2, !dbg !23 - store i32 %tmpVar, i32* %b, align 4, !dbg !23 + store i32 %tmpVar, i32* %b, align [filtered], !dbg !23 ret void, !dbg !22 } @@ -47,15 +47,15 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #0 define void @__init_main(%main* %0) { entry: - %self = alloca %main*, align 8 - store %main* %0, %main** %self, align 8 + %self = alloca %main*, align [filtered] + store %main* %0, %main** %self, align [filtered] ret void } define void @__user_init_main(%main* %0) { entry: - %self = alloca %main*, align 8 - store %main* %0, %main** %self, align 8 + %self = alloca %main*, align [filtered] + store %main* %0, %main** %self, align [filtered] ret void } diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return.snap b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return.snap index c084a257c06..4305a1539b9 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return.snap @@ -14,11 +14,11 @@ target triple = "[filtered]" define void @conditional_return(%conditional_return* %0) { entry: - %this = alloca %conditional_return*, align 8 - store %conditional_return* %0, %conditional_return** %this, align 8 + %this = alloca %conditional_return*, align [filtered] + store %conditional_return* %0, %conditional_return** %this, align [filtered] %__vtable = getelementptr inbounds %conditional_return, %conditional_return* %0, i32 0, i32 0 %val = getelementptr inbounds %conditional_return, %conditional_return* %0, i32 0, i32 1 - %load_val = load i32, i32* %val, align 4 + %load_val = load i32, i32* %val, align [filtered] %tmpVar = icmp eq i32 %load_val, 5 br i1 %tmpVar, label %then_block, label %else_block @@ -26,41 +26,41 @@ then_block: ; preds = %entry ret void else_block: ; preds = %entry - store i32 10, i32* %val, align 4 + store i32 10, i32* %val, align [filtered] ret void } define void @__init___vtable_conditional_return(%__vtable_conditional_return* %0) { entry: - %self = alloca %__vtable_conditional_return*, align 8 - store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align 8 - %deref = load %__vtable_conditional_return*, %__vtable_conditional_return** %self, align 8 + %self = alloca %__vtable_conditional_return*, align [filtered] + store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align [filtered] + %deref = load %__vtable_conditional_return*, %__vtable_conditional_return** %self, align [filtered] %__body = getelementptr inbounds %__vtable_conditional_return, %__vtable_conditional_return* %deref, i32 0, i32 0 - store void (%conditional_return*)* @conditional_return, void (%conditional_return*)** %__body, align 8 + store void (%conditional_return*)* @conditional_return, void (%conditional_return*)** %__body, align [filtered] ret void } define void @__init_conditional_return(%conditional_return* %0) { entry: - %self = alloca %conditional_return*, align 8 - store %conditional_return* %0, %conditional_return** %self, align 8 - %deref = load %conditional_return*, %conditional_return** %self, align 8 + %self = alloca %conditional_return*, align [filtered] + store %conditional_return* %0, %conditional_return** %self, align [filtered] + %deref = load %conditional_return*, %conditional_return** %self, align [filtered] %__vtable = getelementptr inbounds %conditional_return, %conditional_return* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_conditional_return* @__vtable_conditional_return_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_conditional_return* @__vtable_conditional_return_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_conditional_return(%__vtable_conditional_return* %0) { entry: - %self = alloca %__vtable_conditional_return*, align 8 - store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align 8 + %self = alloca %__vtable_conditional_return*, align [filtered] + store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align [filtered] ret void } define void @__user_init_conditional_return(%conditional_return* %0) { entry: - %self = alloca %conditional_return*, align 8 - store %conditional_return* %0, %conditional_return** %self, align 8 + %self = alloca %conditional_return*, align [filtered] + store %conditional_return* %0, %conditional_return** %self, align [filtered] ret void } diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap index c6713c2852e..7b678222f94 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap @@ -8,23 +8,23 @@ target triple = "[filtered]" define i32 @foo(i32 %0) !dbg !4 { entry: - %foo = alloca i32, align 4 - %val = alloca i32, align 4 + %foo = alloca i32, align [filtered] + %val = alloca i32, align [filtered] call void @llvm.dbg.declare(metadata i32* %val, metadata !9, metadata !DIExpression()), !dbg !10 - store i32 %0, i32* %val, align 4 + store i32 %0, i32* %val, align [filtered] call void @llvm.dbg.declare(metadata i32* %foo, metadata !11, metadata !DIExpression()), !dbg !12 - store i32 0, i32* %foo, align 4 - %load_val = load i32, i32* %val, align 4, !dbg !13 + store i32 0, i32* %foo, align [filtered] + %load_val = load i32, i32* %val, align [filtered], !dbg !13 %tmpVar = icmp eq i32 %load_val, 5, !dbg !13 br i1 %tmpVar, label %then_block, label %else_block, !dbg !13 then_block: ; preds = %entry - %foo_ret = load i32, i32* %foo, align 4, !dbg !14 + %foo_ret = load i32, i32* %foo, align [filtered], !dbg !14 ret i32 %foo_ret, !dbg !14 else_block: ; preds = %entry - store i32 10, i32* %val, align 4, !dbg !15 - %foo_ret1 = load i32, i32* %foo, align 4, !dbg !16 + store i32 10, i32* %val, align [filtered], !dbg !15 + %foo_ret1 = load i32, i32* %foo, align [filtered], !dbg !16 ret i32 %foo_ret1, !dbg !16 } diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true.snap b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true.snap index 16095b6fc7a..05cf5825ba0 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true.snap @@ -14,23 +14,23 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %my_val = alloca i32, align 4 - %conditional = alloca %conditional_return, align 8 - store i32 5, i32* %my_val, align 4 + %main = alloca i32, align [filtered] + %my_val = alloca i32, align [filtered] + %conditional = alloca %conditional_return, align [filtered] + store i32 5, i32* %my_val, align [filtered] %0 = bitcast %conditional_return* %conditional to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%conditional_return* @__conditional_return__init to i8*), i64 ptrtoint (%conditional_return* getelementptr (%conditional_return, %conditional_return* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%conditional_return* @__conditional_return__init to i8*), i64 ptrtoint (%conditional_return* getelementptr (%conditional_return, %conditional_return* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] call void @__init_conditional_return(%conditional_return* %conditional) call void @__user_init_conditional_return(%conditional_return* %conditional) %val = getelementptr inbounds %conditional_return, %conditional_return* %conditional, i32 0, i32 1 - %load_my_val = load i32, i32* %my_val, align 4 - store i32 %load_my_val, i32* %val, align 4 + %load_my_val = load i32, i32* %my_val, align [filtered] + store i32 %load_my_val, i32* %val, align [filtered] call void @conditional_return(%conditional_return* %conditional) %val1 = getelementptr inbounds %conditional_return, %conditional_return* %conditional, i32 0, i32 1 - %load_val = load i32, i32* %val1, align 4 - store i32 %load_val, i32* %main, align 4 - %main_ret = load i32, i32* %main, align 4 + %load_val = load i32, i32* %val1, align [filtered] + store i32 %load_val, i32* %main, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } @@ -39,11 +39,11 @@ declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noa define void @conditional_return(%conditional_return* %0) { entry: - %this = alloca %conditional_return*, align 8 - store %conditional_return* %0, %conditional_return** %this, align 8 + %this = alloca %conditional_return*, align [filtered] + store %conditional_return* %0, %conditional_return** %this, align [filtered] %__vtable = getelementptr inbounds %conditional_return, %conditional_return* %0, i32 0, i32 0 %val = getelementptr inbounds %conditional_return, %conditional_return* %0, i32 0, i32 1 - %load_val = load i32, i32* %val, align 4 + %load_val = load i32, i32* %val, align [filtered] %tmpVar = icmp eq i32 %load_val, 5 br i1 %tmpVar, label %then_block, label %else_block @@ -51,41 +51,41 @@ then_block: ; preds = %entry ret void else_block: ; preds = %entry - store i32 10, i32* %val, align 4 + store i32 10, i32* %val, align [filtered] ret void } define void @__init___vtable_conditional_return(%__vtable_conditional_return* %0) { entry: - %self = alloca %__vtable_conditional_return*, align 8 - store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align 8 - %deref = load %__vtable_conditional_return*, %__vtable_conditional_return** %self, align 8 + %self = alloca %__vtable_conditional_return*, align [filtered] + store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align [filtered] + %deref = load %__vtable_conditional_return*, %__vtable_conditional_return** %self, align [filtered] %__body = getelementptr inbounds %__vtable_conditional_return, %__vtable_conditional_return* %deref, i32 0, i32 0 - store void (%conditional_return*)* @conditional_return, void (%conditional_return*)** %__body, align 8 + store void (%conditional_return*)* @conditional_return, void (%conditional_return*)** %__body, align [filtered] ret void } define void @__init_conditional_return(%conditional_return* %0) { entry: - %self = alloca %conditional_return*, align 8 - store %conditional_return* %0, %conditional_return** %self, align 8 - %deref = load %conditional_return*, %conditional_return** %self, align 8 + %self = alloca %conditional_return*, align [filtered] + store %conditional_return* %0, %conditional_return** %self, align [filtered] + %deref = load %conditional_return*, %conditional_return** %self, align [filtered] %__vtable = getelementptr inbounds %conditional_return, %conditional_return* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_conditional_return* @__vtable_conditional_return_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_conditional_return* @__vtable_conditional_return_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_conditional_return(%__vtable_conditional_return* %0) { entry: - %self = alloca %__vtable_conditional_return*, align 8 - store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align 8 + %self = alloca %__vtable_conditional_return*, align [filtered] + store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align [filtered] ret void } define void @__user_init_conditional_return(%conditional_return* %0) { entry: - %self = alloca %conditional_return*, align 8 - store %conditional_return* %0, %conditional_return** %self, align 8 + %self = alloca %conditional_return*, align [filtered] + store %conditional_return* %0, %conditional_return** %self, align [filtered] ret void } diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true_negated.snap b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true_negated.snap index 67b64413edb..23ad3fb3547 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true_negated.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_evaluating_true_negated.snap @@ -14,23 +14,23 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %my_val = alloca i32, align 4 - %conditional = alloca %conditional_return, align 8 - store i32 5, i32* %my_val, align 4 + %main = alloca i32, align [filtered] + %my_val = alloca i32, align [filtered] + %conditional = alloca %conditional_return, align [filtered] + store i32 5, i32* %my_val, align [filtered] %0 = bitcast %conditional_return* %conditional to i8* - call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%conditional_return* @__conditional_return__init to i8*), i64 ptrtoint (%conditional_return* getelementptr (%conditional_return, %conditional_return* null, i32 1) to i64), i1 false) - store i32 0, i32* %main, align 4 + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align [filtered] %0, i8* align [filtered] bitcast (%conditional_return* @__conditional_return__init to i8*), i64 ptrtoint (%conditional_return* getelementptr (%conditional_return, %conditional_return* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align [filtered] call void @__init_conditional_return(%conditional_return* %conditional) call void @__user_init_conditional_return(%conditional_return* %conditional) %val = getelementptr inbounds %conditional_return, %conditional_return* %conditional, i32 0, i32 1 - %load_my_val = load i32, i32* %my_val, align 4 - store i32 %load_my_val, i32* %val, align 4 + %load_my_val = load i32, i32* %my_val, align [filtered] + store i32 %load_my_val, i32* %val, align [filtered] call void @conditional_return(%conditional_return* %conditional) %val1 = getelementptr inbounds %conditional_return, %conditional_return* %conditional, i32 0, i32 1 - %load_val = load i32, i32* %val1, align 4 - store i32 %load_val, i32* %main, align 4 - %main_ret = load i32, i32* %main, align 4 + %load_val = load i32, i32* %val1, align [filtered] + store i32 %load_val, i32* %main, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } @@ -39,11 +39,11 @@ declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noa define void @conditional_return(%conditional_return* %0) { entry: - %this = alloca %conditional_return*, align 8 - store %conditional_return* %0, %conditional_return** %this, align 8 + %this = alloca %conditional_return*, align [filtered] + store %conditional_return* %0, %conditional_return** %this, align [filtered] %__vtable = getelementptr inbounds %conditional_return, %conditional_return* %0, i32 0, i32 0 %val = getelementptr inbounds %conditional_return, %conditional_return* %0, i32 0, i32 1 - %load_val = load i32, i32* %val, align 4 + %load_val = load i32, i32* %val, align [filtered] %tmpVar = icmp eq i32 %load_val, 5 %tmpVar1 = xor i1 %tmpVar, true br i1 %tmpVar1, label %then_block, label %else_block @@ -52,41 +52,41 @@ then_block: ; preds = %entry ret void else_block: ; preds = %entry - store i32 10, i32* %val, align 4 + store i32 10, i32* %val, align [filtered] ret void } define void @__init___vtable_conditional_return(%__vtable_conditional_return* %0) { entry: - %self = alloca %__vtable_conditional_return*, align 8 - store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align 8 - %deref = load %__vtable_conditional_return*, %__vtable_conditional_return** %self, align 8 + %self = alloca %__vtable_conditional_return*, align [filtered] + store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align [filtered] + %deref = load %__vtable_conditional_return*, %__vtable_conditional_return** %self, align [filtered] %__body = getelementptr inbounds %__vtable_conditional_return, %__vtable_conditional_return* %deref, i32 0, i32 0 - store void (%conditional_return*)* @conditional_return, void (%conditional_return*)** %__body, align 8 + store void (%conditional_return*)* @conditional_return, void (%conditional_return*)** %__body, align [filtered] ret void } define void @__init_conditional_return(%conditional_return* %0) { entry: - %self = alloca %conditional_return*, align 8 - store %conditional_return* %0, %conditional_return** %self, align 8 - %deref = load %conditional_return*, %conditional_return** %self, align 8 + %self = alloca %conditional_return*, align [filtered] + store %conditional_return* %0, %conditional_return** %self, align [filtered] + %deref = load %conditional_return*, %conditional_return** %self, align [filtered] %__vtable = getelementptr inbounds %conditional_return, %conditional_return* %deref, i32 0, i32 0 - store i32* bitcast (%__vtable_conditional_return* @__vtable_conditional_return_instance to i32*), i32** %__vtable, align 8 + store i32* bitcast (%__vtable_conditional_return* @__vtable_conditional_return_instance to i32*), i32** %__vtable, align [filtered] ret void } define void @__user_init___vtable_conditional_return(%__vtable_conditional_return* %0) { entry: - %self = alloca %__vtable_conditional_return*, align 8 - store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align 8 + %self = alloca %__vtable_conditional_return*, align [filtered] + store %__vtable_conditional_return* %0, %__vtable_conditional_return** %self, align [filtered] ret void } define void @__user_init_conditional_return(%conditional_return* %0) { entry: - %self = alloca %conditional_return*, align 8 - store %conditional_return* %0, %conditional_return** %self, align 8 + %self = alloca %conditional_return*, align [filtered] + store %conditional_return* %0, %conditional_return** %self, align [filtered] ret void } diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap index ac7e3657eba..9f2dd1c3d38 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap @@ -16,12 +16,12 @@ entry: br label %lbl, !dbg !17 lbl: ; preds = %lbl, %entry - %load_val = load i32, i32* %val, align 4, !dbg !16 + %load_val = load i32, i32* %val, align [filtered], !dbg !16 %tmpVar = icmp eq i32 %load_val, 0, !dbg !16 br i1 %tmpVar, label %lbl, label %else_block, !dbg !18 else_block: ; preds = %lbl - store i32 1, i32* %val, align 4, !dbg !19 + store i32 1, i32* %val, align [filtered], !dbg !19 ret void, !dbg !20 } @@ -30,15 +30,15 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #0 define void @__init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } define void @__user_init_foo(%foo* %0) { entry: - %self = alloca %foo*, align 8 - store %foo* %0, %foo** %self, align 8 + %self = alloca %foo*, align [filtered] + store %foo* %0, %foo** %self, align [filtered] ret void } diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_false.snap b/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_false.snap index b7334b1fcd0..711d5b56ae9 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_false.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_false.snap @@ -8,27 +8,27 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x = alloca i8, align 1 - %a = alloca i32, align 4 - store i8 0, i8* %x, align 1 - store i32 0, i32* %a, align 4 - store i32 0, i32* %main, align 4 - store i8 0, i8* %x, align 1 - %load_x = load i8, i8* %x, align 1 + %main = alloca i32, align [filtered] + %x = alloca i8, align [filtered] + %a = alloca i32, align [filtered] + store i8 0, i8* %x, align [filtered] + store i32 0, i32* %a, align [filtered] + store i32 0, i32* %main, align [filtered] + store i8 0, i8* %x, align [filtered] + %load_x = load i8, i8* %x, align [filtered] br i8 %load_x, label %lbl, label %else_block else_block: ; preds = %entry - store i32 2, i32* %a, align 4 + store i32 2, i32* %a, align [filtered] br label %lbl lbl: ; preds = %else_block, %entry - %load_a = load i32, i32* %a, align 4 + %load_a = load i32, i32* %a, align [filtered] %tmpVar = add i32 %load_a, 3 - store i32 %tmpVar, i32* %a, align 4 - %load_a1 = load i32, i32* %a, align 4 - store i32 %load_a1, i32* %main, align 4 - %main_ret = load i32, i32* %main, align 4 + store i32 %tmpVar, i32* %a, align [filtered] + %load_a1 = load i32, i32* %a, align [filtered] + store i32 %load_a1, i32* %main, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_true.snap b/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_true.snap index 153360236d1..1e7425d74e1 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_true.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__jump_to_label_with_true.snap @@ -8,27 +8,27 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %x = alloca i8, align 1 - %a = alloca i32, align 4 - store i8 0, i8* %x, align 1 - store i32 0, i32* %a, align 4 - store i32 0, i32* %main, align 4 - store i8 1, i8* %x, align 1 - %load_x = load i8, i8* %x, align 1 + %main = alloca i32, align [filtered] + %x = alloca i8, align [filtered] + %a = alloca i32, align [filtered] + store i8 0, i8* %x, align [filtered] + store i32 0, i32* %a, align [filtered] + store i32 0, i32* %main, align [filtered] + store i8 1, i8* %x, align [filtered] + %load_x = load i8, i8* %x, align [filtered] br i8 %load_x, label %lbl, label %else_block else_block: ; preds = %entry - store i32 2, i32* %a, align 4 + store i32 2, i32* %a, align [filtered] br label %lbl lbl: ; preds = %else_block, %entry - %load_a = load i32, i32* %a, align 4 + %load_a = load i32, i32* %a, align [filtered] %tmpVar = add i32 %load_a, 3 - store i32 %tmpVar, i32* %a, align 4 - %load_a1 = load i32, i32* %a, align 4 - store i32 %load_a1, i32* %main, align 4 - %main_ret = load i32, i32* %main, align 4 + store i32 %tmpVar, i32* %a, align [filtered] + %load_a1 = load i32, i32* %a, align [filtered] + store i32 %load_a1, i32* %main, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap index 9ca9d3ee7a1..2bd8303317a 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap @@ -13,7 +13,7 @@ define void @main(%main* %0) !dbg !11 { entry: call void @llvm.dbg.declare(metadata %main* %0, metadata !15, metadata !DIExpression()), !dbg !16 %x = getelementptr inbounds %main, %main* %0, i32 0, i32 0 - store i32 5, i32* %x, align 4, !dbg !17 + store i32 5, i32* %x, align [filtered], !dbg !17 ret void, !dbg !18 } @@ -22,15 +22,15 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #0 define void @__init_main(%main* %0) { entry: - %self = alloca %main*, align 8 - store %main* %0, %main** %self, align 8 + %self = alloca %main*, align [filtered] + store %main* %0, %main** %self, align [filtered] ret void } define void @__user_init_main(%main* %0) { entry: - %self = alloca %main*, align 8 - store %main* %0, %main** %self, align 8 + %self = alloca %main*, align [filtered] + store %main* %0, %main** %self, align [filtered] ret void } diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__variable_source_to_variable_and_block_sink.snap b/tests/integration/snapshots/tests__integration__cfc__ir__variable_source_to_variable_and_block_sink.snap index 42d65715419..1c2c5ff7104 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__variable_source_to_variable_and_block_sink.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__variable_source_to_variable_and_block_sink.snap @@ -8,48 +8,48 @@ target triple = "[filtered]" define i32 @main() { entry: - %main = alloca i32, align 4 - %value = alloca i32, align 4 - store i32 2, i32* %value, align 4 - store i32 0, i32* %main, align 4 - %load_value = load i32, i32* %value, align 4 + %main = alloca i32, align [filtered] + %value = alloca i32, align [filtered] + store i32 2, i32* %value, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_value = load i32, i32* %value, align [filtered] %call = call i32 @myConnection(i32 %load_value) - store i32 %call, i32* %main, align 4 - %main_ret = load i32, i32* %main, align 4 + store i32 %call, i32* %main, align [filtered] + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } define i32 @myAdd(i32 %0, i32 %1) { entry: - %myAdd = alloca i32, align 4 - %a = alloca i32, align 4 - store i32 %0, i32* %a, align 4 - %b = alloca i32, align 4 - store i32 %1, i32* %b, align 4 - store i32 0, i32* %myAdd, align 4 - %load_a = load i32, i32* %a, align 4 - %load_b = load i32, i32* %b, align 4 + %myAdd = alloca i32, align [filtered] + %a = alloca i32, align [filtered] + store i32 %0, i32* %a, align [filtered] + %b = alloca i32, align [filtered] + store i32 %1, i32* %b, align [filtered] + store i32 0, i32* %myAdd, align [filtered] + %load_a = load i32, i32* %a, align [filtered] + %load_b = load i32, i32* %b, align [filtered] %tmpVar = add i32 %load_a, %load_b - store i32 %tmpVar, i32* %myAdd, align 4 - %myAdd_ret = load i32, i32* %myAdd, align 4 + store i32 %tmpVar, i32* %myAdd, align [filtered] + %myAdd_ret = load i32, i32* %myAdd, align [filtered] ret i32 %myAdd_ret } define i32 @myConnection(i32 %0) { entry: - %myConnection = alloca i32, align 4 - %x = alloca i32, align 4 - store i32 %0, i32* %x, align 4 - %y = alloca i32, align 4 - store i32 0, i32* %y, align 4 - store i32 0, i32* %myConnection, align 4 - %load_x = load i32, i32* %x, align 4 - store i32 %load_x, i32* %y, align 4 - %load_y = load i32, i32* %y, align 4 - %load_x1 = load i32, i32* %x, align 4 + %myConnection = alloca i32, align [filtered] + %x = alloca i32, align [filtered] + store i32 %0, i32* %x, align [filtered] + %y = alloca i32, align [filtered] + store i32 0, i32* %y, align [filtered] + store i32 0, i32* %myConnection, align [filtered] + %load_x = load i32, i32* %x, align [filtered] + store i32 %load_x, i32* %y, align [filtered] + %load_y = load i32, i32* %y, align [filtered] + %load_x1 = load i32, i32* %x, align [filtered] %call = call i32 @myAdd(i32 %load_y, i32 %load_x1) - store i32 %call, i32* %myConnection, align 4 - %myConnection_ret = load i32, i32* %myConnection, align 4 + store i32 %call, i32* %myConnection, align [filtered] + %myConnection_ret = load i32, i32* %myConnection, align [filtered] ret i32 %myConnection_ret } diff --git a/tests/integration/snapshots/tests__integration__command_line_compile__ir_generation_full_pass.snap b/tests/integration/snapshots/tests__integration__command_line_compile__ir_generation_full_pass.snap index ad6093b76be..b0ffdd39151 100644 --- a/tests/integration/snapshots/tests__integration__command_line_compile__ir_generation_full_pass.snap +++ b/tests/integration/snapshots/tests__integration__command_line_compile__ir_generation_full_pass.snap @@ -2,4 +2,4 @@ source: tests/integration/command_line_compile.rs expression: content --- -target datalayout = "[filtered]"@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___command_line_st, i8* null }]define void @__init___command_line_st() {entry: ret void}define i32 @myFunc(i32 %0, i32 %1, i32 %2) {entry: %myFunc = alloca i32, align 4 %a = alloca i32, align 4 store i32 %0, i32* %a, align 4 %b = alloca i32, align 4 store i32 %1, i32* %b, align 4 %c = alloca i32, align 4 store i32 %2, i32* %c, align 4 store i32 0, i32* %myFunc, align 4 %myFunc_ret = load i32, i32* %myFunc, align 4 ret i32 %myFunc_ret} +target datalayout = "[filtered]"@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___command_line_st, i8* null }]define void @__init___command_line_st() {entry: ret void}define i32 @myFunc(i32 %0, i32 %1, i32 %2) {entry: %myFunc = alloca i32, align [filtered] %a = alloca i32, align [filtered] store i32 %0, i32* %a, align [filtered] %b = alloca i32, align [filtered] store i32 %1, i32* %b, align [filtered] %c = alloca i32, align [filtered] store i32 %2, i32* %c, align [filtered] store i32 0, i32* %myFunc, align [filtered] %myFunc_ret = load i32, i32* %myFunc, align [filtered] ret i32 %myFunc_ret} From e5b180475f911edb105790be4aa834c3898bf113 Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Tue, 25 Nov 2025 15:27:18 +0100 Subject: [PATCH 07/18] filter debug align info --- ...n_different_locations_with_debug_info.snap | 6 +- ...files__multiple_files_with_debug_info.snap | 6 +- compiler/plc_util/src/lib.rs | 4 +- src/codegen/tests/debug_tests.rs | 274 +++++++++--------- ...ate_return_value_variable_in_function.snap | 8 +- ...rray_size_correctly_set_in_dwarf_info.snap | 6 +- ...g__assignment_statement_have_location.snap | 2 +- ...ging__case_conditions_location_marked.snap | 2 +- ...bugging__exit_statement_have_location.snap | 2 +- ...gging__for_conditions_location_marked.snap | 2 +- ...bugging__function_calls_have_location.snap | 2 +- ...on_calls_in_expressions_have_location.snap | 2 +- ...ugging__if_conditions_location_marked.snap | 2 +- ...g__implementation_added_as_subroutine.snap | 6 +- ...g__nested_function_calls_get_location.snap | 2 +- ...callable_expressions_have_no_location.snap | 2 +- ...on_function_pous_have_struct_as_param.snap | 8 +- ...ng__repeat_conditions_location_marked.snap | 2 +- ...gging__return_statement_have_location.snap | 2 +- ...ring_size_correctly_set_in_dwarf_info.snap | 4 +- ...temp_variables_in_pous_added_as_local.snap | 24 +- ...out_inout_in_function_added_as_params.snap | 6 +- ...ing__while_conditions_location_marked.snap | 2 +- src/codegen/tests/oop_tests/debug_tests.rs | 190 ++++++------ ...__debug_tests__dwarf_version_override.snap | 3 +- ...tests__debug_tests__global_alias_type.snap | 3 +- ..._global_var_array_added_to_debug_info.snap | 9 +- ...__global_var_enum_added_to_debug_info.snap | 6 +- ...var_nested_struct_added_to_debug_info.snap | 12 +- ...lobal_var_pointer_added_to_debug_info.snap | 10 +- ...global_var_string_added_to_debug_info.snap | 8 +- ...global_var_struct_added_to_debug_info.snap | 12 +- ...__integration__cfc__ir__actions_debug.snap | 6 +- ...on__cfc__ir__conditional_return_debug.snap | 2 +- ...sts__integration__cfc__ir__jump_debug.snap | 4 +- ...tegration__cfc__ir__sink_source_debug.snap | 4 +- 36 files changed, 321 insertions(+), 324 deletions(-) diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap index 520dd9b8499..8274812dcd8 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_in_different_locations_with_debug_info.snap @@ -40,7 +40,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "main", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "main", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 13, scope: !4) !12 = !DILocation(line: 10, column: 4, scope: !4) @@ -49,7 +49,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !15 = !DIFile(filename: "file2.st", directory: "lib") !16 = !DISubroutineType(flags: DIFlagPublic, types: !17) !17 = !{null, !18} -!18 = !DICompositeType(tag: DW_TAG_structure_type, name: "mainProg", scope: !15, file: !15, line: 2, align: 64, flags: DIFlagPublic, elements: !8, identifier: "mainProg") +!18 = !DICompositeType(tag: DW_TAG_structure_type, name: "mainProg", scope: !15, file: !15, line: 2, align [filtered], flags: DIFlagPublic, elements: !8, identifier: "mainProg") ; ModuleID = 'lib/file2.st' source_filename = "lib/file2.st" @@ -77,7 +77,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "mainProg", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "file2.st", directory: "lib") -!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "mainProg", scope: !2, file: !2, line: 2, align: 64, flags: DIFlagPublic, elements: !4, identifier: "mainProg") +!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "mainProg", scope: !2, file: !2, line: 2, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "mainProg") !4 = !{} !5 = !{i32 2, !"Dwarf Version", i32 5} !6 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap index 221d36bf115..df26934b933 100644 --- a/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap +++ b/compiler/plc_driver/src/tests/snapshots/plc_driver__tests__multi_files__multiple_files_with_debug_info.snap @@ -40,7 +40,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "main", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "main", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 13, scope: !4) !12 = !DILocation(line: 10, column: 4, scope: !4) @@ -49,7 +49,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !15 = !DIFile(filename: "file2.st", directory: "") !16 = !DISubroutineType(flags: DIFlagPublic, types: !17) !17 = !{null, !18} -!18 = !DICompositeType(tag: DW_TAG_structure_type, name: "mainProg", scope: !15, file: !15, line: 2, align: 64, flags: DIFlagPublic, elements: !8, identifier: "mainProg") +!18 = !DICompositeType(tag: DW_TAG_structure_type, name: "mainProg", scope: !15, file: !15, line: 2, align [filtered], flags: DIFlagPublic, elements: !8, identifier: "mainProg") ; ModuleID = 'file2.st' source_filename = "file2.st" @@ -77,7 +77,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "mainProg", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "file2.st", directory: "") -!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "mainProg", scope: !2, file: !2, line: 2, align: 64, flags: DIFlagPublic, elements: !4, identifier: "mainProg") +!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "mainProg", scope: !2, file: !2, line: 2, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "mainProg") !4 = !{} !5 = !{i32 2, !"Dwarf Version", i32 5} !6 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/compiler/plc_util/src/lib.rs b/compiler/plc_util/src/lib.rs index 4481b254db2..349f4f76aa5 100644 --- a/compiler/plc_util/src/lib.rs +++ b/compiler/plc_util/src/lib.rs @@ -7,7 +7,7 @@ macro_rules! filtered_assert_snapshot { let mut settings = insta::Settings::clone_current(); settings.add_filter(r#"target datalayout = ".*""#, r#"target datalayout = "[filtered]""#); settings.add_filter(r#"target triple = ".*""#, r#"target triple = "[filtered]""#); - settings.add_filter(r#"align \d"#, r#"align [filtered]"#); + settings.add_filter(r#"align:? \d{1,2}"#, r#"align [filtered]"#); settings.bind(|| insta::assert_snapshot!($value)) }}; @@ -16,7 +16,7 @@ macro_rules! filtered_assert_snapshot { let mut settings = insta::Settings::clone_current(); settings.add_filter(r#"target datalayout = ".*""#, r#"target datalayout = "[filtered]""#); settings.add_filter(r#"target triple = ".*""#, r#"target triple = "[filtered]""#); - settings.add_filter(r#"align \d"#, r#"align [filtered]"#); + settings.add_filter(r#"align:? \d{1,2}"#, r#"align [filtered]"#); settings.bind(|| insta::assert_snapshot!($value, @$snapshot)); }}; } diff --git a/src/codegen/tests/debug_tests.rs b/src/codegen/tests/debug_tests.rs index c8784a2c845..e8c4e78fdb0 100644 --- a/src/codegen/tests/debug_tests.rs +++ b/src/codegen/tests/debug_tests.rs @@ -314,14 +314,14 @@ fn switch_case_debug_info() { !5 = !DISubroutineType(flags: DIFlagPublic, types: !6) !6 = !{null} !7 = !{} - !8 = !DILocalVariable(name: "x1", scope: !4, file: !3, line: 4, type: !9, align: 16) + !8 = !DILocalVariable(name: "x1", scope: !4, file: !3, line: 4, type: !9, align [filtered]) !9 = !DIBasicType(name: "INT", size: 16, encoding: DW_ATE_signed, flags: DIFlagPublic) !10 = !DILocation(line: 4, column: 16, scope: !4) - !11 = !DILocalVariable(name: "x2", scope: !4, file: !3, line: 5, type: !9, align: 16) + !11 = !DILocalVariable(name: "x2", scope: !4, file: !3, line: 5, type: !9, align [filtered]) !12 = !DILocation(line: 5, column: 16, scope: !4) - !13 = !DILocalVariable(name: "x3", scope: !4, file: !3, line: 6, type: !9, align: 16) + !13 = !DILocalVariable(name: "x3", scope: !4, file: !3, line: 6, type: !9, align [filtered]) !14 = !DILocation(line: 6, column: 16, scope: !4) - !15 = !DILocalVariable(name: "main", scope: !4, file: !3, line: 2, type: !16, align: 32) + !15 = !DILocalVariable(name: "main", scope: !4, file: !3, line: 2, type: !16, align [filtered]) !16 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !17 = !DILocation(line: 2, column: 17, scope: !4) !18 = !DILocation(line: 22, column: 12, scope: !4) @@ -439,11 +439,11 @@ fn dbg_declare_has_valid_metadata_references_for_methods() { !1 = distinct !DIGlobalVariable(name: "__fb__init", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") !3 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) - !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "fb", scope: !2, file: !2, line: 2, size: 64, align: 64, flags: DIFlagPublic, elements: !5, identifier: "fb") + !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "fb", scope: !2, file: !2, line: 2, size: 64, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "fb") !5 = !{!6} - !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align: 64, flags: DIFlagPublic) - !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____fb___vtable", scope: !2, file: !2, baseType: !8, align: 64) - !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__fb___vtable", baseType: !9, size: 64, align: 64, dwarfAddressSpace: 1) + !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align [filtered], flags: DIFlagPublic) + !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____fb___vtable", scope: !2, file: !2, baseType: !8, align [filtered]) + !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__fb___vtable", baseType: !9, size: 64, align [filtered], dwarfAddressSpace: 1) !9 = !DIBasicType(name: "__VOID", encoding: DW_ATE_unsigned, flags: DIFlagPublic) !10 = !{i32 2, !"Dwarf Version", i32 5} !11 = !{i32 2, !"Debug Info Version", i32 3} @@ -562,7 +562,7 @@ fn action_with_var_temp() { !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "PLC_PRG", scope: !2, file: !2, line: 7, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") - !3 = !DICompositeType(tag: DW_TAG_structure_type, name: "PLC_PRG", scope: !2, file: !2, line: 7, align: 64, flags: DIFlagPublic, elements: !4, identifier: "PLC_PRG") + !3 = !DICompositeType(tag: DW_TAG_structure_type, name: "PLC_PRG", scope: !2, file: !2, line: 7, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "PLC_PRG") !4 = !{} !5 = !{i32 2, !"Dwarf Version", i32 5} !6 = !{i32 2, !"Debug Info Version", i32 3} @@ -571,7 +571,7 @@ fn action_with_var_temp() { !9 = distinct !DISubprogram(name: "main", linkageName: "main", scope: !2, file: !2, line: 2, type: !10, scopeLine: 3, flags: DIFlagPublic, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !4) !10 = !DISubroutineType(flags: DIFlagPublic, types: !11) !11 = !{null} - !12 = !DILocalVariable(name: "main", scope: !9, file: !2, line: 2, type: !13, align: 32) + !12 = !DILocalVariable(name: "main", scope: !9, file: !2, line: 2, type: !13, align [filtered]) !13 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !14 = !DILocation(line: 2, column: 17, scope: !9) !15 = !DILocation(line: 3, column: 12, scope: !9) @@ -582,13 +582,13 @@ fn action_with_var_temp() { !20 = !{null, !3} !21 = !DILocalVariable(name: "PLC_PRG", scope: !18, file: !2, line: 12, type: !3) !22 = !DILocation(line: 12, column: 12, scope: !18) - !23 = !DILocalVariable(name: "x", scope: !18, file: !2, line: 9, type: !13, align: 32) + !23 = !DILocalVariable(name: "x", scope: !18, file: !2, line: 9, type: !13, align [filtered]) !24 = !DILocation(line: 9, column: 12, scope: !18) !25 = !DILocation(line: 13, column: 8, scope: !18) !26 = distinct !DISubprogram(name: "PLC_PRG.act", linkageName: "PLC_PRG.act", scope: !2, file: !2, line: 16, type: !19, scopeLine: 17, flags: DIFlagPublic, spFlags: DISPFlagDefinition, unit: !7, retainedNodes: !4) !27 = !DILocalVariable(name: "PLC_PRG", scope: !26, file: !2, line: 17, type: !3) !28 = !DILocation(line: 17, column: 16, scope: !26) - !29 = !DILocalVariable(name: "x", scope: !26, file: !2, line: 9, type: !13, align: 32) + !29 = !DILocalVariable(name: "x", scope: !26, file: !2, line: 9, type: !13, align [filtered]) !30 = !DILocation(line: 9, column: 12, scope: !26) !31 = !DILocation(line: 18, column: 12, scope: !26) "#); @@ -824,34 +824,34 @@ END_FUNCTION !1 = distinct !DIGlobalVariable(name: "__struct___init", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") !3 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) - !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "struct_", scope: !2, file: !2, line: 2, size: 13440, align: 64, flags: DIFlagPublic, elements: !5, identifier: "struct_") + !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "struct_", scope: !2, file: !2, line: 2, size: 13440, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "struct_") !5 = !{!6, !25, !27, !28, !29, !30, !31} - !6 = !DIDerivedType(tag: DW_TAG_member, name: "inner", scope: !2, file: !2, line: 3, baseType: !7, size: 2688, align: 64, flags: DIFlagPublic) - !7 = !DICompositeType(tag: DW_TAG_structure_type, name: "inner", scope: !2, file: !2, line: 13, size: 2688, align: 64, flags: DIFlagPublic, elements: !8, identifier: "inner") + !6 = !DIDerivedType(tag: DW_TAG_member, name: "inner", scope: !2, file: !2, line: 3, baseType: !7, size: 2688, align [filtered], flags: DIFlagPublic) + !7 = !DICompositeType(tag: DW_TAG_structure_type, name: "inner", scope: !2, file: !2, line: 13, size: 2688, align [filtered], flags: DIFlagPublic, elements: !8, identifier: "inner") !8 = !{!9, !15, !17, !19, !23} - !9 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !2, file: !2, line: 14, baseType: !10, size: 648, align: 8, flags: DIFlagPublic) - !10 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !11, align: 8) - !11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 648, align: 8, elements: !13) + !9 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !2, file: !2, line: 14, baseType: !10, size: 648, align [filtered], flags: DIFlagPublic) + !10 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !11, align [filtered]) + !11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 648, align [filtered], elements: !13) !12 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic) !13 = !{!14} !14 = !DISubrange(count: 81, lowerBound: 0) - !15 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 15, baseType: !16, size: 8, align: 8, offset: 648, flags: DIFlagPublic) + !15 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 15, baseType: !16, size: 8, align [filtered], offset: 648, flags: DIFlagPublic) !16 = !DIBasicType(name: "BOOL", size: 8, encoding: DW_ATE_boolean, flags: DIFlagPublic) - !17 = !DIDerivedType(tag: DW_TAG_member, name: "r", scope: !2, file: !2, line: 16, baseType: !18, size: 32, align: 32, offset: 672, flags: DIFlagPublic) + !17 = !DIDerivedType(tag: DW_TAG_member, name: "r", scope: !2, file: !2, line: 16, baseType: !18, size: 32, align [filtered], offset: 672, flags: DIFlagPublic) !18 = !DIBasicType(name: "REAL", size: 32, encoding: DW_ATE_float, flags: DIFlagPublic) - !19 = !DIDerivedType(tag: DW_TAG_member, name: "arr", scope: !2, file: !2, line: 17, baseType: !20, size: 1944, align: 8, offset: 704, flags: DIFlagPublic) - !20 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 1944, align: 8, elements: !21) + !19 = !DIDerivedType(tag: DW_TAG_member, name: "arr", scope: !2, file: !2, line: 17, baseType: !20, size: 1944, align [filtered], offset: 704, flags: DIFlagPublic) + !20 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 1944, align [filtered], elements: !21) !21 = !{!22} !22 = !DISubrange(count: 3, lowerBound: 0) - !23 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !2, file: !2, line: 18, baseType: !24, size: 16, align: 16, offset: 2656, flags: DIFlagPublic) + !23 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !2, file: !2, line: 18, baseType: !24, size: 16, align [filtered], offset: 2656, flags: DIFlagPublic) !24 = !DIBasicType(name: "INT", size: 16, encoding: DW_ATE_signed, flags: DIFlagPublic) - !25 = !DIDerivedType(tag: DW_TAG_member, name: "inner_arr", scope: !2, file: !2, line: 4, baseType: !26, size: 8064, align: 64, offset: 2688, flags: DIFlagPublic) - !26 = !DICompositeType(tag: DW_TAG_array_type, baseType: !7, size: 8064, align: 64, elements: !21) - !27 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !2, file: !2, line: 5, baseType: !10, size: 648, align: 8, offset: 10752, flags: DIFlagPublic) - !28 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 6, baseType: !16, size: 8, align: 8, offset: 11400, flags: DIFlagPublic) - !29 = !DIDerivedType(tag: DW_TAG_member, name: "r", scope: !2, file: !2, line: 7, baseType: !18, size: 32, align: 32, offset: 11424, flags: DIFlagPublic) - !30 = !DIDerivedType(tag: DW_TAG_member, name: "arr", scope: !2, file: !2, line: 8, baseType: !20, size: 1944, align: 8, offset: 11456, flags: DIFlagPublic) - !31 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !2, file: !2, line: 9, baseType: !24, size: 16, align: 16, offset: 13408, flags: DIFlagPublic) + !25 = !DIDerivedType(tag: DW_TAG_member, name: "inner_arr", scope: !2, file: !2, line: 4, baseType: !26, size: 8064, align [filtered], offset: 2688, flags: DIFlagPublic) + !26 = !DICompositeType(tag: DW_TAG_array_type, baseType: !7, size: 8064, align [filtered], elements: !21) + !27 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !2, file: !2, line: 5, baseType: !10, size: 648, align [filtered], offset: 10752, flags: DIFlagPublic) + !28 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 6, baseType: !16, size: 8, align [filtered], offset: 11400, flags: DIFlagPublic) + !29 = !DIDerivedType(tag: DW_TAG_member, name: "r", scope: !2, file: !2, line: 7, baseType: !18, size: 32, align [filtered], offset: 11424, flags: DIFlagPublic) + !30 = !DIDerivedType(tag: DW_TAG_member, name: "arr", scope: !2, file: !2, line: 8, baseType: !20, size: 1944, align [filtered], offset: 11456, flags: DIFlagPublic) + !31 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !2, file: !2, line: 9, baseType: !24, size: 16, align [filtered], offset: 13408, flags: DIFlagPublic) !32 = !DIGlobalVariableExpression(var: !33, expr: !DIExpression()) !33 = distinct !DIGlobalVariable(name: "__inner__init", scope: !2, file: !2, line: 13, type: !34, isLocal: false, isDefinition: true) !34 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !7) @@ -863,15 +863,15 @@ END_FUNCTION !40 = !DISubroutineType(flags: DIFlagPublic, types: !41) !41 = !{null} !42 = !{} - !43 = !DILocalVariable(name: "st", scope: !39, file: !2, line: 24, type: !4, align: 64) + !43 = !DILocalVariable(name: "st", scope: !39, file: !2, line: 24, type: !4, align [filtered]) !44 = !DILocation(line: 24, column: 4, scope: !39) - !45 = !DILocalVariable(name: "s", scope: !39, file: !2, line: 25, type: !10, align: 8) + !45 = !DILocalVariable(name: "s", scope: !39, file: !2, line: 25, type: !10, align [filtered]) !46 = !DILocation(line: 25, column: 4, scope: !39) - !47 = !DILocalVariable(name: "b", scope: !39, file: !2, line: 26, type: !16, align: 8) + !47 = !DILocalVariable(name: "b", scope: !39, file: !2, line: 26, type: !16, align [filtered]) !48 = !DILocation(line: 26, column: 4, scope: !39) - !49 = !DILocalVariable(name: "arr", scope: !39, file: !2, line: 27, type: !20, align: 8) + !49 = !DILocalVariable(name: "arr", scope: !39, file: !2, line: 27, type: !20, align [filtered]) !50 = !DILocation(line: 27, column: 4, scope: !39) - !51 = !DILocalVariable(name: "i", scope: !39, file: !2, line: 28, type: !24, align: 16) + !51 = !DILocalVariable(name: "i", scope: !39, file: !2, line: 28, type: !24, align [filtered]) !52 = !DILocation(line: 28, column: 4, scope: !39) !53 = !DILocation(line: 0, scope: !39) !54 = !DILocation(line: 32, column: 4, scope: !39) @@ -1008,24 +1008,24 @@ fn constants_are_tagged_as_such() { !5 = !DIGlobalVariableExpression(var: !6, expr: !DIExpression()) !6 = distinct !DIGlobalVariable(name: "s", scope: !2, file: !2, line: 4, type: !7, isLocal: false, isDefinition: true) !7 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !8) - !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !9, align: 8) - !9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 648, align: 8, elements: !11) + !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !9, align [filtered]) + !9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 648, align [filtered], elements: !11) !10 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic) !11 = !{!12} !12 = !DISubrange(count: 81, lowerBound: 0) !13 = !DIGlobalVariableExpression(var: !14, expr: !DIExpression()) !14 = distinct !DIGlobalVariable(name: "prog", scope: !2, file: !2, line: 8, type: !15, isLocal: false, isDefinition: true) - !15 = !DICompositeType(tag: DW_TAG_structure_type, name: "prog", scope: !2, file: !2, line: 8, size: 96, align: 64, flags: DIFlagPublic, elements: !16, identifier: "prog") + !15 = !DICompositeType(tag: DW_TAG_structure_type, name: "prog", scope: !2, file: !2, line: 8, size: 96, align [filtered], flags: DIFlagPublic, elements: !16, identifier: "prog") !16 = !{!17, !18, !19} - !17 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 10, baseType: !3, size: 32, align: 32, flags: DIFlagPublic) - !18 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 10, baseType: !3, size: 32, align: 32, offset: 32, flags: DIFlagPublic) - !19 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !2, file: !2, line: 10, baseType: !3, size: 32, align: 32, offset: 64, flags: DIFlagPublic) + !17 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 10, baseType: !3, size: 32, align [filtered], flags: DIFlagPublic) + !18 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 10, baseType: !3, size: 32, align [filtered], offset: 32, flags: DIFlagPublic) + !19 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !2, file: !2, line: 10, baseType: !3, size: 32, align [filtered], offset: 64, flags: DIFlagPublic) !20 = !DIGlobalVariableExpression(var: !21, expr: !DIExpression()) !21 = distinct !DIGlobalVariable(name: "__foo__init", scope: !2, file: !2, line: 14, type: !22, isLocal: false, isDefinition: true) !22 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !23) - !23 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 14, size: 32, align: 64, flags: DIFlagPublic, elements: !24, identifier: "foo") + !23 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 14, size: 32, align [filtered], flags: DIFlagPublic, elements: !24, identifier: "foo") !24 = !{!25} - !25 = !DIDerivedType(tag: DW_TAG_member, name: "z", scope: !2, file: !2, line: 15, baseType: !4, size: 32, align: 32, flags: DIFlagPublic) + !25 = !DIDerivedType(tag: DW_TAG_member, name: "z", scope: !2, file: !2, line: 15, baseType: !4, size: 32, align [filtered], flags: DIFlagPublic) !26 = !DIGlobalVariableExpression(var: !27, expr: !DIExpression()) !27 = distinct !DIGlobalVariable(name: "f", scope: !2, file: !2, line: 5, type: !22, isLocal: false, isDefinition: true) !28 = !{i32 2, !"Dwarf Version", i32 5} @@ -1041,9 +1041,9 @@ fn constants_are_tagged_as_such() { !38 = distinct !DISubprogram(name: "bar", linkageName: "bar", scope: !2, file: !2, line: 19, type: !39, scopeLine: 23, flags: DIFlagPublic, spFlags: DISPFlagDefinition, unit: !30, retainedNodes: !35) !39 = !DISubroutineType(flags: DIFlagPublic, types: !40) !40 = !{null} - !41 = !DILocalVariable(name: "d", scope: !38, file: !2, line: 21, type: !3, align: 32) + !41 = !DILocalVariable(name: "d", scope: !38, file: !2, line: 21, type: !3, align [filtered]) !42 = !DILocation(line: 21, column: 12, scope: !38) - !43 = !DILocalVariable(name: "bar", scope: !38, file: !2, line: 19, type: !4, align: 32) + !43 = !DILocalVariable(name: "bar", scope: !38, file: !2, line: 19, type: !4, align [filtered]) !44 = !DILocation(line: 19, column: 17, scope: !38) !45 = !DILocation(line: 23, column: 8, scope: !38) "#); @@ -1106,31 +1106,31 @@ fn test_debug_info_regular_pointer_types() { !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "basic_ptr", scope: !2, file: !2, line: 3, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") - !3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____global_basic_ptr", scope: !2, file: !2, baseType: !4, align: 64) - !4 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_basic_ptr", baseType: !5, size: 64, align: 64, dwarfAddressSpace: 1) + !3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____global_basic_ptr", scope: !2, file: !2, baseType: !4, align [filtered]) + !4 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_basic_ptr", baseType: !5, size: 64, align [filtered], dwarfAddressSpace: 1) !5 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression()) !7 = distinct !DIGlobalVariable(name: "array_ptr", scope: !2, file: !2, line: 4, type: !8, isLocal: false, isDefinition: true) - !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____global_array_ptr", scope: !2, file: !2, baseType: !9, align: 64) - !9 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_array_ptr", baseType: !10, size: 64, align: 64, dwarfAddressSpace: 1) - !10 = !DICompositeType(tag: DW_TAG_array_type, baseType: !5, size: 352, align: 32, elements: !11) + !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____global_array_ptr", scope: !2, file: !2, baseType: !9, align [filtered]) + !9 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_array_ptr", baseType: !10, size: 64, align [filtered], dwarfAddressSpace: 1) + !10 = !DICompositeType(tag: DW_TAG_array_type, baseType: !5, size: 352, align [filtered], elements: !11) !11 = !{!12} !12 = !DISubrange(count: 11, lowerBound: 0) !13 = !DIGlobalVariableExpression(var: !14, expr: !DIExpression()) !14 = distinct !DIGlobalVariable(name: "struct_ptr", scope: !2, file: !2, line: 5, type: !15, isLocal: false, isDefinition: true) - !15 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____global_struct_ptr", scope: !2, file: !2, baseType: !16, align: 64) - !16 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_struct_ptr", baseType: !17, size: 64, align: 64, dwarfAddressSpace: 1) - !17 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 9, size: 64, align: 64, flags: DIFlagPublic, elements: !18, identifier: "myStruct") + !15 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____global_struct_ptr", scope: !2, file: !2, baseType: !16, align [filtered]) + !16 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_struct_ptr", baseType: !17, size: 64, align [filtered], dwarfAddressSpace: 1) + !17 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 9, size: 64, align [filtered], flags: DIFlagPublic, elements: !18, identifier: "myStruct") !18 = !{!19, !20} - !19 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 10, baseType: !5, size: 32, align: 32, flags: DIFlagPublic) - !20 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 11, baseType: !21, size: 8, align: 8, offset: 32, flags: DIFlagPublic) + !19 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 10, baseType: !5, size: 32, align [filtered], flags: DIFlagPublic) + !20 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 11, baseType: !21, size: 8, align [filtered], offset: 32, flags: DIFlagPublic) !21 = !DIBasicType(name: "BOOL", size: 8, encoding: DW_ATE_boolean, flags: DIFlagPublic) !22 = !DIGlobalVariableExpression(var: !23, expr: !DIExpression()) !23 = distinct !DIGlobalVariable(name: "string_ptr", scope: !2, file: !2, line: 6, type: !24, isLocal: false, isDefinition: true) - !24 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____global_string_ptr", scope: !2, file: !2, baseType: !25, align: 64) - !25 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_string_ptr", baseType: !26, size: 64, align: 64, dwarfAddressSpace: 1) - !26 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !27, align: 8) - !27 = !DICompositeType(tag: DW_TAG_array_type, baseType: !28, size: 648, align: 8, elements: !29) + !24 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____global_string_ptr", scope: !2, file: !2, baseType: !25, align [filtered]) + !25 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_string_ptr", baseType: !26, size: 64, align [filtered], dwarfAddressSpace: 1) + !26 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !27, align [filtered]) + !27 = !DICompositeType(tag: DW_TAG_array_type, baseType: !28, size: 648, align [filtered], elements: !29) !28 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic) !29 = !{!30} !30 = !DISubrange(count: 81, lowerBound: 0) @@ -1238,37 +1238,37 @@ fn test_debug_info_auto_deref_parameters() { !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "test_with_ref_params", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") - !3 = !DICompositeType(tag: DW_TAG_structure_type, name: "test_with_ref_params", scope: !2, file: !2, line: 2, size: 320, align: 64, flags: DIFlagPublic, elements: !4, identifier: "test_with_ref_params") + !3 = !DICompositeType(tag: DW_TAG_structure_type, name: "test_with_ref_params", scope: !2, file: !2, line: 2, size: 320, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "test_with_ref_params") !4 = !{!5, !13, !20, !23, !31} - !5 = !DIDerivedType(tag: DW_TAG_member, name: "input_ref", scope: !2, file: !2, line: 4, baseType: !6, size: 64, align: 64, flags: DIFlagPublic) - !6 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_STRING", scope: !2, file: !2, baseType: !7, align: 64) - !7 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_STRING", baseType: !8, size: 64, align: 64, dwarfAddressSpace: 1) - !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !9, align: 8) - !9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 648, align: 8, elements: !11) + !5 = !DIDerivedType(tag: DW_TAG_member, name: "input_ref", scope: !2, file: !2, line: 4, baseType: !6, size: 64, align [filtered], flags: DIFlagPublic) + !6 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_STRING", scope: !2, file: !2, baseType: !7, align [filtered]) + !7 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_STRING", baseType: !8, size: 64, align [filtered], dwarfAddressSpace: 1) + !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !9, align [filtered]) + !9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 648, align [filtered], elements: !11) !10 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic) !11 = !{!12} !12 = !DISubrange(count: 81, lowerBound: 0) - !13 = !DIDerivedType(tag: DW_TAG_member, name: "array_ref", scope: !2, file: !2, line: 5, baseType: !14, size: 64, align: 64, offset: 64, flags: DIFlagPublic) - !14 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to___test_with_ref_params_array_ref", scope: !2, file: !2, baseType: !15, align: 64) - !15 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to___test_with_ref_params_array_ref", baseType: !16, size: 64, align: 64, dwarfAddressSpace: 1) - !16 = !DICompositeType(tag: DW_TAG_array_type, baseType: !17, size: 192, align: 32, elements: !18) + !13 = !DIDerivedType(tag: DW_TAG_member, name: "array_ref", scope: !2, file: !2, line: 5, baseType: !14, size: 64, align [filtered], offset: 64, flags: DIFlagPublic) + !14 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to___test_with_ref_params_array_ref", scope: !2, file: !2, baseType: !15, align [filtered]) + !15 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to___test_with_ref_params_array_ref", baseType: !16, size: 64, align [filtered], dwarfAddressSpace: 1) + !16 = !DICompositeType(tag: DW_TAG_array_type, baseType: !17, size: 192, align [filtered], elements: !18) !17 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !18 = !{!19} !19 = !DISubrange(count: 6, lowerBound: 0) - !20 = !DIDerivedType(tag: DW_TAG_member, name: "inout_value", scope: !2, file: !2, line: 8, baseType: !21, size: 64, align: 64, offset: 128, flags: DIFlagPublic) - !21 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_DINT", scope: !2, file: !2, baseType: !22, align: 64) - !22 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_DINT", baseType: !17, size: 64, align: 64, dwarfAddressSpace: 1) - !23 = !DIDerivedType(tag: DW_TAG_member, name: "inout_struct", scope: !2, file: !2, line: 9, baseType: !24, size: 64, align: 64, offset: 192, flags: DIFlagPublic) - !24 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_myStruct", scope: !2, file: !2, baseType: !25, align: 64) - !25 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_myStruct", baseType: !26, size: 64, align: 64, dwarfAddressSpace: 1) - !26 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 16, size: 64, align: 64, flags: DIFlagPublic, elements: !27, identifier: "myStruct") + !20 = !DIDerivedType(tag: DW_TAG_member, name: "inout_value", scope: !2, file: !2, line: 8, baseType: !21, size: 64, align [filtered], offset: 128, flags: DIFlagPublic) + !21 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_DINT", scope: !2, file: !2, baseType: !22, align [filtered]) + !22 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_DINT", baseType: !17, size: 64, align [filtered], dwarfAddressSpace: 1) + !23 = !DIDerivedType(tag: DW_TAG_member, name: "inout_struct", scope: !2, file: !2, line: 9, baseType: !24, size: 64, align [filtered], offset: 192, flags: DIFlagPublic) + !24 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_myStruct", scope: !2, file: !2, baseType: !25, align [filtered]) + !25 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_myStruct", baseType: !26, size: 64, align [filtered], dwarfAddressSpace: 1) + !26 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 16, size: 64, align [filtered], flags: DIFlagPublic, elements: !27, identifier: "myStruct") !27 = !{!28, !29} - !28 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 17, baseType: !17, size: 32, align: 32, flags: DIFlagPublic) - !29 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 18, baseType: !30, size: 8, align: 8, offset: 32, flags: DIFlagPublic) + !28 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 17, baseType: !17, size: 32, align [filtered], flags: DIFlagPublic) + !29 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 18, baseType: !30, size: 8, align [filtered], offset: 32, flags: DIFlagPublic) !30 = !DIBasicType(name: "BOOL", size: 8, encoding: DW_ATE_boolean, flags: DIFlagPublic) - !31 = !DIDerivedType(tag: DW_TAG_member, name: "local_ref", scope: !2, file: !2, line: 12, baseType: !32, size: 64, align: 64, offset: 256, flags: DIFlagPublic) - !32 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____test_with_ref_params_local_ref", scope: !2, file: !2, baseType: !33, align: 64) - !33 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__test_with_ref_params_local_ref", baseType: !17, size: 64, align: 64, dwarfAddressSpace: 1) + !31 = !DIDerivedType(tag: DW_TAG_member, name: "local_ref", scope: !2, file: !2, line: 12, baseType: !32, size: 64, align [filtered], offset: 256, flags: DIFlagPublic) + !32 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____test_with_ref_params_local_ref", scope: !2, file: !2, baseType: !33, align [filtered]) + !33 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__test_with_ref_params_local_ref", baseType: !17, size: 64, align [filtered], dwarfAddressSpace: 1) !34 = !DIGlobalVariableExpression(var: !35, expr: !DIExpression()) !35 = distinct !DIGlobalVariable(name: "__myStruct__init", scope: !2, file: !2, line: 16, type: !36, isLocal: false, isDefinition: true) !36 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !26) @@ -1348,11 +1348,11 @@ fn test_debug_info_auto_deref_alias_pointers() { !1 = distinct !DIGlobalVariable(name: "__myStruct__init", scope: !2, file: !2, line: 10, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") !3 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) - !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 10, size: 64, align: 64, flags: DIFlagPublic, elements: !5, identifier: "myStruct") + !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 10, size: 64, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "myStruct") !5 = !{!6, !8} - !6 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 11, baseType: !7, size: 32, align: 32, flags: DIFlagPublic) + !6 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 11, baseType: !7, size: 32, align [filtered], flags: DIFlagPublic) !7 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) - !8 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 12, baseType: !9, size: 8, align: 8, offset: 32, flags: DIFlagPublic) + !8 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 12, baseType: !9, size: 8, align [filtered], offset: 32, flags: DIFlagPublic) !9 = !DIBasicType(name: "BOOL", size: 8, encoding: DW_ATE_boolean, flags: DIFlagPublic) !10 = !DIGlobalVariableExpression(var: !11, expr: !DIExpression()) !11 = distinct !DIGlobalVariable(name: "global_struct", scope: !2, file: !2, line: 6, type: !4, isLocal: false, isDefinition: true) @@ -1360,12 +1360,12 @@ fn test_debug_info_auto_deref_alias_pointers() { !13 = distinct !DIGlobalVariable(name: "global_var", scope: !2, file: !2, line: 3, type: !7, isLocal: false, isDefinition: true) !14 = !DIGlobalVariableExpression(var: !15, expr: !DIExpression()) !15 = distinct !DIGlobalVariable(name: "alias_int", scope: !2, file: !2, line: 4, type: !16, isLocal: false, isDefinition: true) - !16 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____global_alias_int", scope: !2, file: !2, baseType: !17, align: 64) - !17 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_alias_int", baseType: !7, size: 64, align: 64, dwarfAddressSpace: 1) + !16 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____global_alias_int", scope: !2, file: !2, baseType: !17, align [filtered]) + !17 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_alias_int", baseType: !7, size: 64, align [filtered], dwarfAddressSpace: 1) !18 = !DIGlobalVariableExpression(var: !19, expr: !DIExpression()) !19 = distinct !DIGlobalVariable(name: "alias_struct", scope: !2, file: !2, line: 7, type: !20, isLocal: false, isDefinition: true) - !20 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____global_alias_struct", scope: !2, file: !2, baseType: !21, align: 64) - !21 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_alias_struct", baseType: !4, size: 64, align: 64, dwarfAddressSpace: 1) + !20 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____global_alias_struct", scope: !2, file: !2, baseType: !21, align [filtered]) + !21 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_alias_struct", baseType: !4, size: 64, align [filtered], dwarfAddressSpace: 1) !22 = !{i32 2, !"Dwarf Version", i32 5} !23 = !{i32 2, !"Debug Info Version", i32 3} !24 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !25, splitDebugInlining: false) @@ -1452,37 +1452,37 @@ fn test_debug_info_mixed_pointer_types() { !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "mixed_ptr", scope: !2, file: !2, line: 7, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") - !3 = !DICompositeType(tag: DW_TAG_structure_type, name: "mixed_ptr", scope: !2, file: !2, line: 7, size: 256, align: 64, flags: DIFlagPublic, elements: !4, identifier: "mixed_ptr") + !3 = !DICompositeType(tag: DW_TAG_structure_type, name: "mixed_ptr", scope: !2, file: !2, line: 7, size: 256, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "mixed_ptr") !4 = !{!5, !13, !17, !21} - !5 = !DIDerivedType(tag: DW_TAG_member, name: "ref_param", scope: !2, file: !2, line: 9, baseType: !6, size: 64, align: 64, flags: DIFlagPublic) - !6 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_STRING", scope: !2, file: !2, baseType: !7, align: 64) - !7 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_STRING", baseType: !8, size: 64, align: 64, dwarfAddressSpace: 1) - !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !9, align: 8) - !9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 648, align: 8, elements: !11) + !5 = !DIDerivedType(tag: DW_TAG_member, name: "ref_param", scope: !2, file: !2, line: 9, baseType: !6, size: 64, align [filtered], flags: DIFlagPublic) + !6 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_STRING", scope: !2, file: !2, baseType: !7, align [filtered]) + !7 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_STRING", baseType: !8, size: 64, align [filtered], dwarfAddressSpace: 1) + !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !9, align [filtered]) + !9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 648, align [filtered], elements: !11) !10 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic) !11 = !{!12} !12 = !DISubrange(count: 81, lowerBound: 0) - !13 = !DIDerivedType(tag: DW_TAG_member, name: "inout_param", scope: !2, file: !2, line: 12, baseType: !14, size: 64, align: 64, offset: 64, flags: DIFlagPublic) - !14 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_DINT", scope: !2, file: !2, baseType: !15, align: 64) - !15 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_DINT", baseType: !16, size: 64, align: 64, dwarfAddressSpace: 1) + !13 = !DIDerivedType(tag: DW_TAG_member, name: "inout_param", scope: !2, file: !2, line: 12, baseType: !14, size: 64, align [filtered], offset: 64, flags: DIFlagPublic) + !14 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_DINT", scope: !2, file: !2, baseType: !15, align [filtered]) + !15 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_DINT", baseType: !16, size: 64, align [filtered], dwarfAddressSpace: 1) !16 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) - !17 = !DIDerivedType(tag: DW_TAG_member, name: "local_ptr", scope: !2, file: !2, line: 15, baseType: !18, size: 64, align: 64, offset: 128, flags: DIFlagPublic) - !18 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____mixed_ptr_local_ptr", scope: !2, file: !2, baseType: !19, align: 64) - !19 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__mixed_ptr_local_ptr", baseType: !20, size: 64, align: 64, dwarfAddressSpace: 1) + !17 = !DIDerivedType(tag: DW_TAG_member, name: "local_ptr", scope: !2, file: !2, line: 15, baseType: !18, size: 64, align [filtered], offset: 128, flags: DIFlagPublic) + !18 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____mixed_ptr_local_ptr", scope: !2, file: !2, baseType: !19, align [filtered]) + !19 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__mixed_ptr_local_ptr", baseType: !20, size: 64, align [filtered], dwarfAddressSpace: 1) !20 = !DIBasicType(name: "BOOL", size: 8, encoding: DW_ATE_boolean, flags: DIFlagPublic) - !21 = !DIDerivedType(tag: DW_TAG_member, name: "local_ref", scope: !2, file: !2, line: 16, baseType: !22, size: 64, align: 64, offset: 192, flags: DIFlagPublic) - !22 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____mixed_ptr_local_ref", scope: !2, file: !2, baseType: !23, align: 64) - !23 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__mixed_ptr_local_ref", baseType: !20, size: 64, align: 64, dwarfAddressSpace: 1) + !21 = !DIDerivedType(tag: DW_TAG_member, name: "local_ref", scope: !2, file: !2, line: 16, baseType: !22, size: 64, align [filtered], offset: 192, flags: DIFlagPublic) + !22 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____mixed_ptr_local_ref", scope: !2, file: !2, baseType: !23, align [filtered]) + !23 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__mixed_ptr_local_ref", baseType: !20, size: 64, align [filtered], dwarfAddressSpace: 1) !24 = !DIGlobalVariableExpression(var: !25, expr: !DIExpression()) !25 = distinct !DIGlobalVariable(name: "regular_ptr", scope: !2, file: !2, line: 3, type: !26, isLocal: false, isDefinition: true) - !26 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____global_regular_ptr", scope: !2, file: !2, baseType: !27, align: 64) - !27 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_regular_ptr", baseType: !16, size: 64, align: 64, dwarfAddressSpace: 1) + !26 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____global_regular_ptr", scope: !2, file: !2, baseType: !27, align [filtered]) + !27 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_regular_ptr", baseType: !16, size: 64, align [filtered], dwarfAddressSpace: 1) !28 = !DIGlobalVariableExpression(var: !29, expr: !DIExpression()) !29 = distinct !DIGlobalVariable(name: "alias_var", scope: !2, file: !2, line: 4, type: !30, isLocal: false, isDefinition: true) - !30 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____global_alias_var", scope: !2, file: !2, baseType: !31, align: 64) - !31 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_alias_var", baseType: !32, size: 64, align: 64, dwarfAddressSpace: 1) - !32 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____global_alias_var_", scope: !2, file: !2, baseType: !33, align: 64) - !33 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_alias_var_", baseType: !16, size: 64, align: 64, dwarfAddressSpace: 1) + !30 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____global_alias_var", scope: !2, file: !2, baseType: !31, align [filtered]) + !31 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_alias_var", baseType: !32, size: 64, align [filtered], dwarfAddressSpace: 1) + !32 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____global_alias_var_", scope: !2, file: !2, baseType: !33, align [filtered]) + !33 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_alias_var_", baseType: !16, size: 64, align [filtered], dwarfAddressSpace: 1) !34 = !{i32 2, !"Dwarf Version", i32 5} !35 = !{i32 2, !"Debug Info Version", i32 3} !36 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !37, splitDebugInlining: false) @@ -1595,50 +1595,50 @@ fn test_debug_info_auto_deref_reference_to_pointers() { !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "basic_reference", scope: !2, file: !2, line: 3, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") - !3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____global_basic_reference", scope: !2, file: !2, baseType: !4, align: 64) - !4 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_basic_reference", baseType: !5, size: 64, align: 64, dwarfAddressSpace: 1) + !3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____global_basic_reference", scope: !2, file: !2, baseType: !4, align [filtered]) + !4 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_basic_reference", baseType: !5, size: 64, align [filtered], dwarfAddressSpace: 1) !5 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression()) !7 = distinct !DIGlobalVariable(name: "array_reference", scope: !2, file: !2, line: 4, type: !8, isLocal: false, isDefinition: true) - !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____global_array_reference", scope: !2, file: !2, baseType: !9, align: 64) - !9 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_array_reference", baseType: !10, size: 64, align: 64, dwarfAddressSpace: 1) - !10 = !DICompositeType(tag: DW_TAG_array_type, baseType: !5, size: 352, align: 32, elements: !11) + !8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____global_array_reference", scope: !2, file: !2, baseType: !9, align [filtered]) + !9 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_array_reference", baseType: !10, size: 64, align [filtered], dwarfAddressSpace: 1) + !10 = !DICompositeType(tag: DW_TAG_array_type, baseType: !5, size: 352, align [filtered], elements: !11) !11 = !{!12} !12 = !DISubrange(count: 11, lowerBound: 0) !13 = !DIGlobalVariableExpression(var: !14, expr: !DIExpression()) !14 = distinct !DIGlobalVariable(name: "struct_reference", scope: !2, file: !2, line: 5, type: !15, isLocal: false, isDefinition: true) - !15 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____global_struct_reference", scope: !2, file: !2, baseType: !16, align: 64) - !16 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_struct_reference", baseType: !17, size: 64, align: 64, dwarfAddressSpace: 1) - !17 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 19, size: 64, align: 64, flags: DIFlagPublic, elements: !18, identifier: "myStruct") + !15 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____global_struct_reference", scope: !2, file: !2, baseType: !16, align [filtered]) + !16 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_struct_reference", baseType: !17, size: 64, align [filtered], dwarfAddressSpace: 1) + !17 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 19, size: 64, align [filtered], flags: DIFlagPublic, elements: !18, identifier: "myStruct") !18 = !{!19, !20} - !19 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 20, baseType: !5, size: 32, align: 32, flags: DIFlagPublic) - !20 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 21, baseType: !21, size: 8, align: 8, offset: 32, flags: DIFlagPublic) + !19 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 20, baseType: !5, size: 32, align [filtered], flags: DIFlagPublic) + !20 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 21, baseType: !21, size: 8, align [filtered], offset: 32, flags: DIFlagPublic) !21 = !DIBasicType(name: "BOOL", size: 8, encoding: DW_ATE_boolean, flags: DIFlagPublic) !22 = !DIGlobalVariableExpression(var: !23, expr: !DIExpression()) !23 = distinct !DIGlobalVariable(name: "string_reference", scope: !2, file: !2, line: 6, type: !24, isLocal: false, isDefinition: true) - !24 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____global_string_reference", scope: !2, file: !2, baseType: !25, align: 64) - !25 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_string_reference", baseType: !26, size: 64, align: 64, dwarfAddressSpace: 1) - !26 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !27, align: 8) - !27 = !DICompositeType(tag: DW_TAG_array_type, baseType: !28, size: 648, align: 8, elements: !29) + !24 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____global_string_reference", scope: !2, file: !2, baseType: !25, align [filtered]) + !25 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_string_reference", baseType: !26, size: 64, align [filtered], dwarfAddressSpace: 1) + !26 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !27, align [filtered]) + !27 = !DICompositeType(tag: DW_TAG_array_type, baseType: !28, size: 648, align [filtered], elements: !29) !28 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic) !29 = !{!30} !30 = !DISubrange(count: 81, lowerBound: 0) !31 = !DIGlobalVariableExpression(var: !32, expr: !DIExpression()) !32 = distinct !DIGlobalVariable(name: "test_with_reference_params", scope: !2, file: !2, line: 9, type: !33, isLocal: false, isDefinition: true) - !33 = !DICompositeType(tag: DW_TAG_structure_type, name: "test_with_reference_params", scope: !2, file: !2, line: 9, size: 192, align: 64, flags: DIFlagPublic, elements: !34, identifier: "test_with_reference_params") + !33 = !DICompositeType(tag: DW_TAG_structure_type, name: "test_with_reference_params", scope: !2, file: !2, line: 9, size: 192, align [filtered], flags: DIFlagPublic, elements: !34, identifier: "test_with_reference_params") !34 = !{!35, !38, !44} - !35 = !DIDerivedType(tag: DW_TAG_member, name: "ref_param", scope: !2, file: !2, line: 11, baseType: !36, size: 64, align: 64, flags: DIFlagPublic) - !36 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____test_with_reference_params_ref_param", scope: !2, file: !2, baseType: !37, align: 64) - !37 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__test_with_reference_params_ref_param", baseType: !5, size: 64, align: 64, dwarfAddressSpace: 1) - !38 = !DIDerivedType(tag: DW_TAG_member, name: "array_ref_param", scope: !2, file: !2, line: 12, baseType: !39, size: 64, align: 64, offset: 64, flags: DIFlagPublic) - !39 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____test_with_reference_params_array_ref_param", scope: !2, file: !2, baseType: !40, align: 64) - !40 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__test_with_reference_params_array_ref_param", baseType: !41, size: 64, align: 64, dwarfAddressSpace: 1) - !41 = !DICompositeType(tag: DW_TAG_array_type, baseType: !21, size: 48, align: 8, elements: !42) + !35 = !DIDerivedType(tag: DW_TAG_member, name: "ref_param", scope: !2, file: !2, line: 11, baseType: !36, size: 64, align [filtered], flags: DIFlagPublic) + !36 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____test_with_reference_params_ref_param", scope: !2, file: !2, baseType: !37, align [filtered]) + !37 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__test_with_reference_params_ref_param", baseType: !5, size: 64, align [filtered], dwarfAddressSpace: 1) + !38 = !DIDerivedType(tag: DW_TAG_member, name: "array_ref_param", scope: !2, file: !2, line: 12, baseType: !39, size: 64, align [filtered], offset: 64, flags: DIFlagPublic) + !39 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____test_with_reference_params_array_ref_param", scope: !2, file: !2, baseType: !40, align [filtered]) + !40 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__test_with_reference_params_array_ref_param", baseType: !41, size: 64, align [filtered], dwarfAddressSpace: 1) + !41 = !DICompositeType(tag: DW_TAG_array_type, baseType: !21, size: 48, align [filtered], elements: !42) !42 = !{!43} !43 = !DISubrange(count: 6, lowerBound: 0) - !44 = !DIDerivedType(tag: DW_TAG_member, name: "local_reference", scope: !2, file: !2, line: 15, baseType: !45, size: 64, align: 64, offset: 128, flags: DIFlagPublic) - !45 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____test_with_reference_params_local_reference", scope: !2, file: !2, baseType: !46, align: 64) - !46 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__test_with_reference_params_local_reference", baseType: !17, size: 64, align: 64, dwarfAddressSpace: 1) + !44 = !DIDerivedType(tag: DW_TAG_member, name: "local_reference", scope: !2, file: !2, line: 15, baseType: !45, size: 64, align [filtered], offset: 128, flags: DIFlagPublic) + !45 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REFERENCE_TO____test_with_reference_params_local_reference", scope: !2, file: !2, baseType: !46, align [filtered]) + !46 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__test_with_reference_params_local_reference", baseType: !17, size: 64, align [filtered], dwarfAddressSpace: 1) !47 = !DIGlobalVariableExpression(var: !48, expr: !DIExpression()) !48 = distinct !DIGlobalVariable(name: "__myStruct__init", scope: !2, file: !2, line: 19, type: !49, isLocal: false, isDefinition: true) !49 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !17) @@ -1716,11 +1716,11 @@ fn range_datatype_debug() { !5 = !DISubroutineType(flags: DIFlagPublic, types: !6) !6 = !{null} !7 = !{} - !8 = !DILocalVariable(name: "r", scope: !4, file: !3, line: 8, type: !9, align: 32) - !9 = !DIDerivedType(tag: DW_TAG_typedef, name: "RangeType", scope: !3, file: !3, line: 2, baseType: !10, align: 32) + !8 = !DILocalVariable(name: "r", scope: !4, file: !3, line: 8, type: !9, align [filtered]) + !9 = !DIDerivedType(tag: DW_TAG_typedef, name: "RangeType", scope: !3, file: !3, line: 2, baseType: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 8, column: 12, scope: !4) - !12 = !DILocalVariable(name: "main", scope: !4, file: !3, line: 6, type: !10, align: 32) + !12 = !DILocalVariable(name: "main", scope: !4, file: !3, line: 6, type: !10, align [filtered]) !13 = !DILocation(line: 6, column: 17, scope: !4) !14 = !DILocation(line: 10, column: 12, scope: !4) !15 = !DILocation(line: 11, column: 12, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__aggregate_return_value_variable_in_function.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__aggregate_return_value_variable_in_function.snap index b3189f0cb4a..b2b2681f5df 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__aggregate_return_value_variable_in_function.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__aggregate_return_value_variable_in_function.snap @@ -39,10 +39,10 @@ attributes #1 = { argmemonly nofree nounwind willreturn } !5 = !DIFile(filename: "", directory: "") !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null, !8} -!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_STRING", scope: !3, file: !3, baseType: !9, align: 64) -!9 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_STRING", baseType: !10, size: 64, align: 64, dwarfAddressSpace: 1) -!10 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !3, file: !3, baseType: !11, align: 8) -!11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 648, align: 8, elements: !13) +!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_STRING", scope: !3, file: !3, baseType: !9, align [filtered]) +!9 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_STRING", baseType: !10, size: 64, align [filtered], dwarfAddressSpace: 1) +!10 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !3, file: !3, baseType: !11, align [filtered]) +!11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 648, align [filtered], elements: !13) !12 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic) !13 = !{!14} !14 = !DISubrange(count: 81, lowerBound: 0) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__array_size_correctly_set_in_dwarf_info.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__array_size_correctly_set_in_dwarf_info.snap index bef8e6de226..6f61f918ab1 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__array_size_correctly_set_in_dwarf_info.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__array_size_correctly_set_in_dwarf_info.snap @@ -41,12 +41,12 @@ attributes #1 = { argmemonly nofree nounwind willreturn writeonly } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "a", scope: !4, file: !5, line: 4, type: !10, align: 32) -!10 = !DICompositeType(tag: DW_TAG_array_type, baseType: !11, size: 2048, align: 32, elements: !12) +!9 = !DILocalVariable(name: "a", scope: !4, file: !5, line: 4, type: !10, align [filtered]) +!10 = !DICompositeType(tag: DW_TAG_array_type, baseType: !11, size: 2048, align [filtered], elements: !12) !11 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !12 = !{!13} !13 = !DISubrange(count: 64, lowerBound: 1) !14 = !DILocation(line: 4, column: 12, scope: !4) -!15 = !DILocalVariable(name: "foo", scope: !4, file: !5, line: 2, type: !11, align: 32) +!15 = !DILocalVariable(name: "foo", scope: !4, file: !5, line: 2, type: !11, align [filtered]) !16 = !DILocation(line: 2, column: 17, scope: !4) !17 = !DILocation(line: 6, column: 8, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__assignment_statement_have_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__assignment_statement_have_location.snap index c4c59c0f78f..46403518964 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__assignment_statement_have_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__assignment_statement_have_location.snap @@ -34,7 +34,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 17, scope: !4) !12 = !DILocation(line: 3, column: 12, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__case_conditions_location_marked.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__case_conditions_location_marked.snap index 8d732d83842..49d42da0728 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__case_conditions_location_marked.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__case_conditions_location_marked.snap @@ -53,7 +53,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 17, scope: !4) !12 = !DILocation(line: 3, column: 12, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__exit_statement_have_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__exit_statement_have_location.snap index 93251a0a889..e786d40a16a 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__exit_statement_have_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__exit_statement_have_location.snap @@ -52,7 +52,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 17, scope: !4) !12 = !DILocation(line: 5, column: 12, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__for_conditions_location_marked.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__for_conditions_location_marked.snap index 8d4ac047f28..890c74ccb09 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__for_conditions_location_marked.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__for_conditions_location_marked.snap @@ -57,7 +57,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 17, scope: !4) !12 = !DILocation(line: 3, column: 16, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_have_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_have_location.snap index 026754e798d..5f4270ecd25 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_have_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_have_location.snap @@ -34,7 +34,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 17, scope: !4) !12 = !DILocation(line: 3, column: 12, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_in_expressions_have_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_in_expressions_have_location.snap index 3e9543028fd..2d586f99e31 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_in_expressions_have_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__function_calls_in_expressions_have_location.snap @@ -35,7 +35,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 17, scope: !4) !12 = !DILocation(line: 3, column: 16, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__if_conditions_location_marked.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__if_conditions_location_marked.snap index e3221d27ed1..7107c08aa37 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__if_conditions_location_marked.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__if_conditions_location_marked.snap @@ -52,7 +52,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 17, scope: !4) !12 = !DILocation(line: 3, column: 15, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__implementation_added_as_subroutine.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__implementation_added_as_subroutine.snap index 81d26fc5c33..21f43c22e6b 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__implementation_added_as_subroutine.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__implementation_added_as_subroutine.snap @@ -47,12 +47,12 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "myPrg", scope: !2, file: !2, line: 4, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") -!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "myPrg", scope: !2, file: !2, line: 4, align: 64, flags: DIFlagPublic, elements: !4, identifier: "myPrg") +!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "myPrg", scope: !2, file: !2, line: 4, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "myPrg") !4 = !{} !5 = !DIGlobalVariableExpression(var: !6, expr: !DIExpression()) !6 = distinct !DIGlobalVariable(name: "__myFb__init", scope: !2, file: !2, line: 6, type: !7, isLocal: false, isDefinition: true) !7 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !8) -!8 = !DICompositeType(tag: DW_TAG_structure_type, name: "myFb", scope: !2, file: !2, line: 6, align: 64, flags: DIFlagPublic, elements: !4, identifier: "myFb") +!8 = !DICompositeType(tag: DW_TAG_structure_type, name: "myFb", scope: !2, file: !2, line: 6, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "myFb") !9 = !{i32 2, !"Dwarf Version", i32 5} !10 = !{i32 2, !"Debug Info Version", i32 3} !11 = distinct !DICompileUnit(language: DW_LANG_C, file: !12, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !13, splitDebugInlining: false) @@ -61,7 +61,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !14 = distinct !DISubprogram(name: "myFunc", linkageName: "myFunc", scope: !2, file: !2, line: 2, type: !15, scopeLine: 3, flags: DIFlagPublic, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !4) !15 = !DISubroutineType(flags: DIFlagPublic, types: !16) !16 = !{null} -!17 = !DILocalVariable(name: "myFunc", scope: !14, file: !2, line: 2, type: !18, align: 32) +!17 = !DILocalVariable(name: "myFunc", scope: !14, file: !2, line: 2, type: !18, align [filtered]) !18 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !19 = !DILocation(line: 2, column: 17, scope: !14) !20 = !DILocation(line: 3, column: 8, scope: !14) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__nested_function_calls_get_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__nested_function_calls_get_location.snap index 1934fe717a4..62e8b991e2e 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__nested_function_calls_get_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__nested_function_calls_get_location.snap @@ -41,7 +41,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !9 = !{} !10 = !DILocalVariable(name: "x", scope: !4, file: !5, line: 3, type: !8) !11 = !DILocation(line: 3, column: 18, scope: !4) -!12 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !8, align: 32) +!12 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !8, align [filtered]) !13 = !DILocation(line: 2, column: 17, scope: !4) !14 = !DILocation(line: 4, column: 19, scope: !4) !15 = !DILocation(line: 4, column: 12, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_callable_expressions_have_no_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_callable_expressions_have_no_location.snap index 3612cb725ef..05a0ad3240c 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_callable_expressions_have_no_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_callable_expressions_have_no_location.snap @@ -34,7 +34,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 17, scope: !4) !12 = !DILocation(line: 3, column: 12, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_function_pous_have_struct_as_param.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_function_pous_have_struct_as_param.snap index 147f6332d60..2f68e97f842 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_function_pous_have_struct_as_param.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__non_function_pous_have_struct_as_param.snap @@ -46,16 +46,16 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "myProg", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") -!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "myProg", scope: !2, file: !2, line: 2, size: 32, align: 64, flags: DIFlagPublic, elements: !4, identifier: "myProg") +!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "myProg", scope: !2, file: !2, line: 2, size: 32, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "myProg") !4 = !{!5} -!5 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 4, baseType: !6, size: 32, align: 32, flags: DIFlagPublic) +!5 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 4, baseType: !6, size: 32, align [filtered], flags: DIFlagPublic) !6 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) !8 = distinct !DIGlobalVariable(name: "__fb__init", scope: !2, file: !2, line: 9, type: !9, isLocal: false, isDefinition: true) !9 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !10) -!10 = !DICompositeType(tag: DW_TAG_structure_type, name: "fb", scope: !2, file: !2, line: 9, size: 32, align: 64, flags: DIFlagPublic, elements: !11, identifier: "fb") +!10 = !DICompositeType(tag: DW_TAG_structure_type, name: "fb", scope: !2, file: !2, line: 9, size: 32, align [filtered], flags: DIFlagPublic, elements: !11, identifier: "fb") !11 = !{!12} -!12 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 11, baseType: !6, size: 32, align: 32, flags: DIFlagPublic) +!12 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 11, baseType: !6, size: 32, align [filtered], flags: DIFlagPublic) !13 = !{i32 2, !"Dwarf Version", i32 5} !14 = !{i32 2, !"Debug Info Version", i32 3} !15 = distinct !DICompileUnit(language: DW_LANG_C, file: !16, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !17, splitDebugInlining: false) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__repeat_conditions_location_marked.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__repeat_conditions_location_marked.snap index ef45cf543a9..04387a57c3c 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__repeat_conditions_location_marked.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__repeat_conditions_location_marked.snap @@ -57,7 +57,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 17, scope: !4) !12 = !DILocation(line: 5, column: 30, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__return_statement_have_location.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__return_statement_have_location.snap index 4488067f933..ede5135f6ef 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__return_statement_have_location.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__return_statement_have_location.snap @@ -37,7 +37,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 17, scope: !4) !12 = !DILocation(line: 3, column: 12, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__string_size_correctly_set_in_dwarf_info.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__string_size_correctly_set_in_dwarf_info.snap index 5a8ffffe0ae..e73141e62dd 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__string_size_correctly_set_in_dwarf_info.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__string_size_correctly_set_in_dwarf_info.snap @@ -15,9 +15,9 @@ target triple = "[filtered]" !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "a", scope: !2, file: !2, line: 3, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") -!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__65", scope: !4, file: !4, baseType: !5, align: 8) +!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__65", scope: !4, file: !4, baseType: !5, align [filtered]) !4 = !DIFile(filename: "", directory: "src") -!5 = !DICompositeType(tag: DW_TAG_array_type, baseType: !6, size: 520, align: 8, elements: !7) +!5 = !DICompositeType(tag: DW_TAG_array_type, baseType: !6, size: 520, align [filtered], elements: !7) !6 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic) !7 = !{!8} !8 = !DISubrange(count: 65, lowerBound: 0) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_and_vartemp_variables_in_pous_added_as_local.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_and_vartemp_variables_in_pous_added_as_local.snap index 6543db20af7..1c53ea5e3cc 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_and_vartemp_variables_in_pous_added_as_local.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_and_vartemp_variables_in_pous_added_as_local.snap @@ -74,12 +74,12 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "myPrg", scope: !2, file: !2, line: 5, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") -!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "myPrg", scope: !2, file: !2, line: 5, align: 64, flags: DIFlagPublic, elements: !4, identifier: "myPrg") +!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "myPrg", scope: !2, file: !2, line: 5, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "myPrg") !4 = !{} !5 = !DIGlobalVariableExpression(var: !6, expr: !DIExpression()) !6 = distinct !DIGlobalVariable(name: "__myFb__init", scope: !2, file: !2, line: 8, type: !7, isLocal: false, isDefinition: true) !7 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !8) -!8 = !DICompositeType(tag: DW_TAG_structure_type, name: "myFb", scope: !2, file: !2, line: 8, align: 64, flags: DIFlagPublic, elements: !4, identifier: "myFb") +!8 = !DICompositeType(tag: DW_TAG_structure_type, name: "myFb", scope: !2, file: !2, line: 8, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "myFb") !9 = !{i32 2, !"Dwarf Version", i32 5} !10 = !{i32 2, !"Debug Info Version", i32 3} !11 = distinct !DICompileUnit(language: DW_LANG_C, file: !12, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !13, splitDebugInlining: false) @@ -88,14 +88,14 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !14 = distinct !DISubprogram(name: "myFunc", linkageName: "myFunc", scope: !2, file: !2, line: 2, type: !15, scopeLine: 4, flags: DIFlagPublic, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !4) !15 = !DISubroutineType(flags: DIFlagPublic, types: !16) !16 = !{null} -!17 = !DILocalVariable(name: "a", scope: !14, file: !2, line: 3, type: !18, align: 32) +!17 = !DILocalVariable(name: "a", scope: !14, file: !2, line: 3, type: !18, align [filtered]) !18 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !19 = !DILocation(line: 3, column: 12, scope: !14) -!20 = !DILocalVariable(name: "b", scope: !14, file: !2, line: 3, type: !18, align: 32) +!20 = !DILocalVariable(name: "b", scope: !14, file: !2, line: 3, type: !18, align [filtered]) !21 = !DILocation(line: 3, column: 14, scope: !14) -!22 = !DILocalVariable(name: "c", scope: !14, file: !2, line: 3, type: !18, align: 32) +!22 = !DILocalVariable(name: "c", scope: !14, file: !2, line: 3, type: !18, align [filtered]) !23 = !DILocation(line: 3, column: 16, scope: !14) -!24 = !DILocalVariable(name: "myFunc", scope: !14, file: !2, line: 2, type: !18, align: 32) +!24 = !DILocalVariable(name: "myFunc", scope: !14, file: !2, line: 2, type: !18, align [filtered]) !25 = !DILocation(line: 2, column: 17, scope: !14) !26 = !DILocation(line: 4, column: 8, scope: !14) !27 = distinct !DISubprogram(name: "myPrg", linkageName: "myPrg", scope: !2, file: !2, line: 5, type: !28, scopeLine: 7, flags: DIFlagPublic, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !4) @@ -103,20 +103,20 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !29 = !{null, !3} !30 = !DILocalVariable(name: "myPrg", scope: !27, file: !2, line: 7, type: !3) !31 = !DILocation(line: 7, column: 8, scope: !27) -!32 = !DILocalVariable(name: "a", scope: !27, file: !2, line: 6, type: !18, align: 32) +!32 = !DILocalVariable(name: "a", scope: !27, file: !2, line: 6, type: !18, align [filtered]) !33 = !DILocation(line: 6, column: 17, scope: !27) -!34 = !DILocalVariable(name: "b", scope: !27, file: !2, line: 6, type: !18, align: 32) +!34 = !DILocalVariable(name: "b", scope: !27, file: !2, line: 6, type: !18, align [filtered]) !35 = !DILocation(line: 6, column: 19, scope: !27) -!36 = !DILocalVariable(name: "c", scope: !27, file: !2, line: 6, type: !18, align: 32) +!36 = !DILocalVariable(name: "c", scope: !27, file: !2, line: 6, type: !18, align [filtered]) !37 = !DILocation(line: 6, column: 21, scope: !27) !38 = distinct !DISubprogram(name: "myFb", linkageName: "myFb", scope: !2, file: !2, line: 8, type: !39, scopeLine: 10, flags: DIFlagPublic, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !4) !39 = !DISubroutineType(flags: DIFlagPublic, types: !40) !40 = !{null, !8} !41 = !DILocalVariable(name: "myFb", scope: !38, file: !2, line: 10, type: !8) !42 = !DILocation(line: 10, column: 8, scope: !38) -!43 = !DILocalVariable(name: "a", scope: !38, file: !2, line: 9, type: !18, align: 32) +!43 = !DILocalVariable(name: "a", scope: !38, file: !2, line: 9, type: !18, align [filtered]) !44 = !DILocation(line: 9, column: 17, scope: !38) -!45 = !DILocalVariable(name: "b", scope: !38, file: !2, line: 9, type: !18, align: 32) +!45 = !DILocalVariable(name: "b", scope: !38, file: !2, line: 9, type: !18, align [filtered]) !46 = !DILocation(line: 9, column: 19, scope: !38) -!47 = !DILocalVariable(name: "c", scope: !38, file: !2, line: 9, type: !18, align: 32) +!47 = !DILocalVariable(name: "c", scope: !38, file: !2, line: 9, type: !18, align [filtered]) !48 = !DILocation(line: 9, column: 21, scope: !38) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_in_out_inout_in_function_added_as_params.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_in_out_inout_in_function_added_as_params.snap index e3fc83ca3d5..a7dfab2db05 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_in_out_inout_in_function_added_as_params.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__var_in_out_inout_in_function_added_as_params.snap @@ -40,13 +40,13 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !5 = !DIFile(filename: "", directory: "") !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null, !8} -!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_INT", scope: !3, file: !3, baseType: !9, align: 64) -!9 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_INT", baseType: !10, size: 64, align: 64, dwarfAddressSpace: 1) +!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__AUTO_DEREF____auto_pointer_to_INT", scope: !3, file: !3, baseType: !9, align [filtered]) +!9 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__auto_pointer_to_INT", baseType: !10, size: 64, align [filtered], dwarfAddressSpace: 1) !10 = !DIBasicType(name: "INT", size: 16, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !{} !12 = !DILocalVariable(name: "x", scope: !4, file: !5, line: 4, type: !8) !13 = !DILocation(line: 4, column: 12, scope: !4) -!14 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !15, align: 32) +!14 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !15, align [filtered]) !15 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !16 = !DILocation(line: 2, column: 17, scope: !4) !17 = !DILocation(line: 6, column: 12, scope: !4) diff --git a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__while_conditions_location_marked.snap b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__while_conditions_location_marked.snap index 8a4b81a1a81..b816f4a546a 100644 --- a/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__while_conditions_location_marked.snap +++ b/src/codegen/tests/debug_tests/snapshots/rusty__codegen__tests__debug_tests__expression_debugging__while_conditions_location_marked.snap @@ -58,7 +58,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !6 = !DISubroutineType(flags: DIFlagPublic, types: !7) !7 = !{null} !8 = !{} -!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align: 32) +!9 = !DILocalVariable(name: "myFunc", scope: !4, file: !5, line: 2, type: !10, align [filtered]) !10 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !11 = !DILocation(line: 2, column: 17, scope: !4) !12 = !DILocation(line: 5, column: 12, scope: !4) diff --git a/src/codegen/tests/oop_tests/debug_tests.rs b/src/codegen/tests/oop_tests/debug_tests.rs index 4009595cbbf..1c207bbd052 100644 --- a/src/codegen/tests/oop_tests/debug_tests.rs +++ b/src/codegen/tests/oop_tests/debug_tests.rs @@ -153,30 +153,30 @@ fn members_from_base_class_are_available_in_subclasses() { !1 = distinct !DIGlobalVariable(name: "__foo__init", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") !3 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) - !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 2, size: 7872, align: 64, flags: DIFlagPublic, elements: !5, identifier: "foo") + !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 2, size: 7872, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "foo") !5 = !{!6, !10, !12, !18} - !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align: 64, flags: DIFlagPublic) - !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____foo___vtable", scope: !2, file: !2, baseType: !8, align: 64) - !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__foo___vtable", baseType: !9, size: 64, align: 64, dwarfAddressSpace: 1) + !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align [filtered], flags: DIFlagPublic) + !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____foo___vtable", scope: !2, file: !2, baseType: !8, align [filtered]) + !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__foo___vtable", baseType: !9, size: 64, align [filtered], dwarfAddressSpace: 1) !9 = !DIBasicType(name: "__VOID", encoding: DW_ATE_unsigned, flags: DIFlagPublic) - !10 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 4, baseType: !11, size: 16, align: 16, offset: 64, flags: DIFlagPublic) + !10 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 4, baseType: !11, size: 16, align [filtered], offset: 64, flags: DIFlagPublic) !11 = !DIBasicType(name: "INT", size: 16, encoding: DW_ATE_signed, flags: DIFlagPublic) - !12 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 5, baseType: !13, size: 648, align: 8, offset: 80, flags: DIFlagPublic) - !13 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !14, align: 8) - !14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 648, align: 8, elements: !16) + !12 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 5, baseType: !13, size: 648, align [filtered], offset: 80, flags: DIFlagPublic) + !13 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !14, align [filtered]) + !14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 648, align [filtered], elements: !16) !15 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic) !16 = !{!17} !17 = !DISubrange(count: 81, lowerBound: 0) - !18 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !2, file: !2, line: 6, baseType: !19, size: 7128, align: 8, offset: 728, flags: DIFlagPublic) - !19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 7128, align: 8, elements: !20) + !18 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !2, file: !2, line: 6, baseType: !19, size: 7128, align [filtered], offset: 728, flags: DIFlagPublic) + !19 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 7128, align [filtered], elements: !20) !20 = !{!21} !21 = !DISubrange(count: 11, lowerBound: 0) !22 = !DIGlobalVariableExpression(var: !23, expr: !DIExpression()) !23 = distinct !DIGlobalVariable(name: "__bar__init", scope: !2, file: !2, line: 10, type: !24, isLocal: false, isDefinition: true) !24 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !25) - !25 = !DICompositeType(tag: DW_TAG_structure_type, name: "bar", scope: !2, file: !2, line: 10, size: 7872, align: 64, flags: DIFlagPublic, elements: !26, identifier: "bar") + !25 = !DICompositeType(tag: DW_TAG_structure_type, name: "bar", scope: !2, file: !2, line: 10, size: 7872, align [filtered], flags: DIFlagPublic, elements: !26, identifier: "bar") !26 = !{!27} - !27 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 7872, align: 64, flags: DIFlagPublic) + !27 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 7872, align [filtered], flags: DIFlagPublic) !28 = !{i32 2, !"Dwarf Version", i32 5} !29 = !{i32 2, !"Debug Info Version", i32 3} !30 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !31, splitDebugInlining: false) @@ -413,30 +413,30 @@ fn write_to_parent_variable_qualified_access() { !1 = distinct !DIGlobalVariable(name: "__fb__init", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") !3 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) - !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "fb", scope: !2, file: !2, line: 2, size: 128, align: 64, flags: DIFlagPublic, elements: !5, identifier: "fb") + !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "fb", scope: !2, file: !2, line: 2, size: 128, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "fb") !5 = !{!6, !10, !12} - !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align: 64, flags: DIFlagPublic) - !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____fb___vtable", scope: !2, file: !2, baseType: !8, align: 64) - !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__fb___vtable", baseType: !9, size: 64, align: 64, dwarfAddressSpace: 1) + !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align [filtered], flags: DIFlagPublic) + !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____fb___vtable", scope: !2, file: !2, baseType: !8, align [filtered]) + !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__fb___vtable", baseType: !9, size: 64, align [filtered], dwarfAddressSpace: 1) !9 = !DIBasicType(name: "__VOID", encoding: DW_ATE_unsigned, flags: DIFlagPublic) - !10 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 4, baseType: !11, size: 16, align: 16, offset: 64, flags: DIFlagPublic) + !10 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 4, baseType: !11, size: 16, align [filtered], offset: 64, flags: DIFlagPublic) !11 = !DIBasicType(name: "INT", size: 16, encoding: DW_ATE_signed, flags: DIFlagPublic) - !12 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 5, baseType: !11, size: 16, align: 16, offset: 80, flags: DIFlagPublic) + !12 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 5, baseType: !11, size: 16, align [filtered], offset: 80, flags: DIFlagPublic) !13 = !DIGlobalVariableExpression(var: !14, expr: !DIExpression()) !14 = distinct !DIGlobalVariable(name: "__fb2__init", scope: !2, file: !2, line: 9, type: !15, isLocal: false, isDefinition: true) !15 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !16) - !16 = !DICompositeType(tag: DW_TAG_structure_type, name: "fb2", scope: !2, file: !2, line: 9, size: 128, align: 64, flags: DIFlagPublic, elements: !17, identifier: "fb2") + !16 = !DICompositeType(tag: DW_TAG_structure_type, name: "fb2", scope: !2, file: !2, line: 9, size: 128, align [filtered], flags: DIFlagPublic, elements: !17, identifier: "fb2") !17 = !{!18} - !18 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 128, align: 64, flags: DIFlagPublic) + !18 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 128, align [filtered], flags: DIFlagPublic) !19 = !DIGlobalVariableExpression(var: !20, expr: !DIExpression()) !20 = distinct !DIGlobalVariable(name: "__foo__init", scope: !2, file: !2, line: 12, type: !21, isLocal: false, isDefinition: true) !21 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !22) - !22 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 12, size: 192, align: 64, flags: DIFlagPublic, elements: !23, identifier: "foo") + !22 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 12, size: 192, align [filtered], flags: DIFlagPublic, elements: !23, identifier: "foo") !23 = !{!24, !27} - !24 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !25, size: 64, align: 64, flags: DIFlagPublic) - !25 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____foo___vtable", scope: !2, file: !2, baseType: !26, align: 64) - !26 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__foo___vtable", baseType: !9, size: 64, align: 64, dwarfAddressSpace: 1) - !27 = !DIDerivedType(tag: DW_TAG_member, name: "myFb", scope: !2, file: !2, line: 14, baseType: !16, size: 128, align: 64, offset: 64, flags: DIFlagPublic) + !24 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !25, size: 64, align [filtered], flags: DIFlagPublic) + !25 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____foo___vtable", scope: !2, file: !2, baseType: !26, align [filtered]) + !26 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__foo___vtable", baseType: !9, size: 64, align [filtered], dwarfAddressSpace: 1) + !27 = !DIDerivedType(tag: DW_TAG_member, name: "myFb", scope: !2, file: !2, line: 14, baseType: !16, size: 128, align [filtered], offset: 64, flags: DIFlagPublic) !28 = !{i32 2, !"Dwarf Version", i32 5} !29 = !{i32 2, !"Debug Info Version", i32 3} !30 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !31, splitDebugInlining: false) @@ -674,24 +674,24 @@ fn write_to_parent_variable_in_instance() { !1 = distinct !DIGlobalVariable(name: "__foo__init", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") !3 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) - !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 2, size: 768, align: 64, flags: DIFlagPublic, elements: !5, identifier: "foo") + !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 2, size: 768, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "foo") !5 = !{!6, !10} - !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align: 64, flags: DIFlagPublic) - !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____foo___vtable", scope: !2, file: !2, baseType: !8, align: 64) - !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__foo___vtable", baseType: !9, size: 64, align: 64, dwarfAddressSpace: 1) + !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align [filtered], flags: DIFlagPublic) + !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____foo___vtable", scope: !2, file: !2, baseType: !8, align [filtered]) + !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__foo___vtable", baseType: !9, size: 64, align [filtered], dwarfAddressSpace: 1) !9 = !DIBasicType(name: "__VOID", encoding: DW_ATE_unsigned, flags: DIFlagPublic) - !10 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !2, file: !2, line: 4, baseType: !11, size: 648, align: 8, offset: 64, flags: DIFlagPublic) - !11 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !12, align: 8) - !12 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 648, align: 8, elements: !14) + !10 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !2, file: !2, line: 4, baseType: !11, size: 648, align [filtered], offset: 64, flags: DIFlagPublic) + !11 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !12, align [filtered]) + !12 = !DICompositeType(tag: DW_TAG_array_type, baseType: !13, size: 648, align [filtered], elements: !14) !13 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic) !14 = !{!15} !15 = !DISubrange(count: 81, lowerBound: 0) !16 = !DIGlobalVariableExpression(var: !17, expr: !DIExpression()) !17 = distinct !DIGlobalVariable(name: "__bar__init", scope: !2, file: !2, line: 11, type: !18, isLocal: false, isDefinition: true) !18 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !19) - !19 = !DICompositeType(tag: DW_TAG_structure_type, name: "bar", scope: !2, file: !2, line: 11, size: 768, align: 64, flags: DIFlagPublic, elements: !20, identifier: "bar") + !19 = !DICompositeType(tag: DW_TAG_structure_type, name: "bar", scope: !2, file: !2, line: 11, size: 768, align [filtered], flags: DIFlagPublic, elements: !20, identifier: "bar") !20 = !{!21} - !21 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 768, align: 64, flags: DIFlagPublic) + !21 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 768, align [filtered], flags: DIFlagPublic) !22 = !{i32 2, !"Dwarf Version", i32 5} !23 = !{i32 2, !"Debug Info Version", i32 3} !24 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !25, splitDebugInlining: false) @@ -715,9 +715,9 @@ fn write_to_parent_variable_in_instance() { !42 = distinct !DISubprogram(name: "main", linkageName: "main", scope: !2, file: !2, line: 15, type: !43, scopeLine: 15, flags: DIFlagPublic, spFlags: DISPFlagDefinition, unit: !24, retainedNodes: !29) !43 = !DISubroutineType(flags: DIFlagPublic, types: !44) !44 = !{null} - !45 = !DILocalVariable(name: "s", scope: !42, file: !2, line: 17, type: !11, align: 8) + !45 = !DILocalVariable(name: "s", scope: !42, file: !2, line: 17, type: !11, align [filtered]) !46 = !DILocation(line: 17, column: 12, scope: !42) - !47 = !DILocalVariable(name: "fb", scope: !42, file: !2, line: 18, type: !19, align: 64) + !47 = !DILocalVariable(name: "fb", scope: !42, file: !2, line: 18, type: !19, align [filtered]) !48 = !DILocation(line: 18, column: 12, scope: !42) !49 = !DILocation(line: 0, scope: !42) !50 = !DILocation(line: 20, column: 12, scope: !42) @@ -995,36 +995,36 @@ fn array_in_parent_generated() { !1 = distinct !DIGlobalVariable(name: "__grandparent__init", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") !3 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) - !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "grandparent", scope: !2, file: !2, line: 2, size: 192, align: 64, flags: DIFlagPublic, elements: !5, identifier: "grandparent") + !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "grandparent", scope: !2, file: !2, line: 2, size: 192, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "grandparent") !5 = !{!6, !10, !15} - !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align: 64, flags: DIFlagPublic) - !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____grandparent___vtable", scope: !2, file: !2, baseType: !8, align: 64) - !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__grandparent___vtable", baseType: !9, size: 64, align: 64, dwarfAddressSpace: 1) + !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align [filtered], flags: DIFlagPublic) + !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____grandparent___vtable", scope: !2, file: !2, baseType: !8, align [filtered]) + !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__grandparent___vtable", baseType: !9, size: 64, align [filtered], dwarfAddressSpace: 1) !9 = !DIBasicType(name: "__VOID", encoding: DW_ATE_unsigned, flags: DIFlagPublic) - !10 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 4, baseType: !11, size: 96, align: 16, offset: 64, flags: DIFlagPublic) - !11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 96, align: 16, elements: !13) + !10 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 4, baseType: !11, size: 96, align [filtered], offset: 64, flags: DIFlagPublic) + !11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 96, align [filtered], elements: !13) !12 = !DIBasicType(name: "INT", size: 16, encoding: DW_ATE_signed, flags: DIFlagPublic) !13 = !{!14} !14 = !DISubrange(count: 6, lowerBound: 0) - !15 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 5, baseType: !12, size: 16, align: 16, offset: 160, flags: DIFlagPublic) + !15 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 5, baseType: !12, size: 16, align [filtered], offset: 160, flags: DIFlagPublic) !16 = !DIGlobalVariableExpression(var: !17, expr: !DIExpression()) !17 = distinct !DIGlobalVariable(name: "__parent__init", scope: !2, file: !2, line: 9, type: !18, isLocal: false, isDefinition: true) !18 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !19) - !19 = !DICompositeType(tag: DW_TAG_structure_type, name: "parent", scope: !2, file: !2, line: 9, size: 384, align: 64, flags: DIFlagPublic, elements: !20, identifier: "parent") + !19 = !DICompositeType(tag: DW_TAG_structure_type, name: "parent", scope: !2, file: !2, line: 9, size: 384, align [filtered], flags: DIFlagPublic, elements: !20, identifier: "parent") !20 = !{!21, !22, !26} - !21 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 192, align: 64, flags: DIFlagPublic) - !22 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 11, baseType: !23, size: 176, align: 16, offset: 192, flags: DIFlagPublic) - !23 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 176, align: 16, elements: !24) + !21 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 192, align [filtered], flags: DIFlagPublic) + !22 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 11, baseType: !23, size: 176, align [filtered], offset: 192, flags: DIFlagPublic) + !23 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 176, align [filtered], elements: !24) !24 = !{!25} !25 = !DISubrange(count: 11, lowerBound: 0) - !26 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 12, baseType: !12, size: 16, align: 16, offset: 368, flags: DIFlagPublic) + !26 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 12, baseType: !12, size: 16, align [filtered], offset: 368, flags: DIFlagPublic) !27 = !DIGlobalVariableExpression(var: !28, expr: !DIExpression()) !28 = distinct !DIGlobalVariable(name: "__child__init", scope: !2, file: !2, line: 16, type: !29, isLocal: false, isDefinition: true) !29 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !30) - !30 = !DICompositeType(tag: DW_TAG_structure_type, name: "child", scope: !2, file: !2, line: 16, size: 576, align: 64, flags: DIFlagPublic, elements: !31, identifier: "child") + !30 = !DICompositeType(tag: DW_TAG_structure_type, name: "child", scope: !2, file: !2, line: 16, size: 576, align [filtered], flags: DIFlagPublic, elements: !31, identifier: "child") !31 = !{!32, !33} - !32 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !19, size: 384, align: 64, flags: DIFlagPublic) - !33 = !DIDerivedType(tag: DW_TAG_member, name: "z", scope: !2, file: !2, line: 18, baseType: !23, size: 176, align: 16, offset: 384, flags: DIFlagPublic) + !32 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !19, size: 384, align [filtered], flags: DIFlagPublic) + !33 = !DIDerivedType(tag: DW_TAG_member, name: "z", scope: !2, file: !2, line: 18, baseType: !23, size: 176, align [filtered], offset: 384, flags: DIFlagPublic) !34 = !{i32 2, !"Dwarf Version", i32 5} !35 = !{i32 2, !"Debug Info Version", i32 3} !36 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !37, splitDebugInlining: false) @@ -1048,8 +1048,8 @@ fn array_in_parent_generated() { !54 = distinct !DISubprogram(name: "main", linkageName: "main", scope: !2, file: !2, line: 22, type: !55, scopeLine: 26, flags: DIFlagPublic, spFlags: DISPFlagDefinition, unit: !36, retainedNodes: !41) !55 = !DISubroutineType(flags: DIFlagPublic, types: !56) !56 = !{null} - !57 = !DILocalVariable(name: "arr", scope: !54, file: !2, line: 24, type: !58, align: 64) - !58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !30, size: 6336, align: 64, elements: !24) + !57 = !DILocalVariable(name: "arr", scope: !54, file: !2, line: 24, type: !58, align [filtered]) + !58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !30, size: 6336, align [filtered], elements: !24) !59 = !DILocation(line: 24, column: 12, scope: !54) !60 = !DILocation(line: 26, column: 12, scope: !54) !61 = !DILocation(line: 27, column: 12, scope: !54) @@ -1307,36 +1307,36 @@ fn complex_array_access_generated() { !1 = distinct !DIGlobalVariable(name: "__grandparent__init", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") !3 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) - !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "grandparent", scope: !2, file: !2, line: 2, size: 192, align: 64, flags: DIFlagPublic, elements: !5, identifier: "grandparent") + !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "grandparent", scope: !2, file: !2, line: 2, size: 192, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "grandparent") !5 = !{!6, !10, !15} - !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align: 64, flags: DIFlagPublic) - !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____grandparent___vtable", scope: !2, file: !2, baseType: !8, align: 64) - !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__grandparent___vtable", baseType: !9, size: 64, align: 64, dwarfAddressSpace: 1) + !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align [filtered], flags: DIFlagPublic) + !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____grandparent___vtable", scope: !2, file: !2, baseType: !8, align [filtered]) + !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__grandparent___vtable", baseType: !9, size: 64, align [filtered], dwarfAddressSpace: 1) !9 = !DIBasicType(name: "__VOID", encoding: DW_ATE_unsigned, flags: DIFlagPublic) - !10 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 4, baseType: !11, size: 96, align: 16, offset: 64, flags: DIFlagPublic) - !11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 96, align: 16, elements: !13) + !10 = !DIDerivedType(tag: DW_TAG_member, name: "y", scope: !2, file: !2, line: 4, baseType: !11, size: 96, align [filtered], offset: 64, flags: DIFlagPublic) + !11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 96, align [filtered], elements: !13) !12 = !DIBasicType(name: "INT", size: 16, encoding: DW_ATE_signed, flags: DIFlagPublic) !13 = !{!14} !14 = !DISubrange(count: 6, lowerBound: 0) - !15 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 5, baseType: !12, size: 16, align: 16, offset: 160, flags: DIFlagPublic) + !15 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 5, baseType: !12, size: 16, align [filtered], offset: 160, flags: DIFlagPublic) !16 = !DIGlobalVariableExpression(var: !17, expr: !DIExpression()) !17 = distinct !DIGlobalVariable(name: "__parent__init", scope: !2, file: !2, line: 9, type: !18, isLocal: false, isDefinition: true) !18 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !19) - !19 = !DICompositeType(tag: DW_TAG_structure_type, name: "parent", scope: !2, file: !2, line: 9, size: 384, align: 64, flags: DIFlagPublic, elements: !20, identifier: "parent") + !19 = !DICompositeType(tag: DW_TAG_structure_type, name: "parent", scope: !2, file: !2, line: 9, size: 384, align [filtered], flags: DIFlagPublic, elements: !20, identifier: "parent") !20 = !{!21, !22, !26} - !21 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 192, align: 64, flags: DIFlagPublic) - !22 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 11, baseType: !23, size: 176, align: 16, offset: 192, flags: DIFlagPublic) - !23 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 176, align: 16, elements: !24) + !21 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 192, align [filtered], flags: DIFlagPublic) + !22 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 11, baseType: !23, size: 176, align [filtered], offset: 192, flags: DIFlagPublic) + !23 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 176, align [filtered], elements: !24) !24 = !{!25} !25 = !DISubrange(count: 11, lowerBound: 0) - !26 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 12, baseType: !12, size: 16, align: 16, offset: 368, flags: DIFlagPublic) + !26 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 12, baseType: !12, size: 16, align [filtered], offset: 368, flags: DIFlagPublic) !27 = !DIGlobalVariableExpression(var: !28, expr: !DIExpression()) !28 = distinct !DIGlobalVariable(name: "__child__init", scope: !2, file: !2, line: 16, type: !29, isLocal: false, isDefinition: true) !29 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !30) - !30 = !DICompositeType(tag: DW_TAG_structure_type, name: "child", scope: !2, file: !2, line: 16, size: 576, align: 64, flags: DIFlagPublic, elements: !31, identifier: "child") + !30 = !DICompositeType(tag: DW_TAG_structure_type, name: "child", scope: !2, file: !2, line: 16, size: 576, align [filtered], flags: DIFlagPublic, elements: !31, identifier: "child") !31 = !{!32, !33} - !32 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !19, size: 384, align: 64, flags: DIFlagPublic) - !33 = !DIDerivedType(tag: DW_TAG_member, name: "z", scope: !2, file: !2, line: 18, baseType: !23, size: 176, align: 16, offset: 384, flags: DIFlagPublic) + !32 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !19, size: 384, align [filtered], flags: DIFlagPublic) + !33 = !DIDerivedType(tag: DW_TAG_member, name: "z", scope: !2, file: !2, line: 18, baseType: !23, size: 176, align [filtered], offset: 384, flags: DIFlagPublic) !34 = !{i32 2, !"Dwarf Version", i32 5} !35 = !{i32 2, !"Debug Info Version", i32 3} !36 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !37, splitDebugInlining: false) @@ -1522,18 +1522,18 @@ fn function_block_method_debug_info() { !1 = distinct !DIGlobalVariable(name: "__foo__init", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") !3 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) - !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 2, size: 64, align: 64, flags: DIFlagPublic, elements: !5, identifier: "foo") + !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 2, size: 64, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "foo") !5 = !{!6} - !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align: 64, flags: DIFlagPublic) - !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____foo___vtable", scope: !2, file: !2, baseType: !8, align: 64) - !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__foo___vtable", baseType: !9, size: 64, align: 64, dwarfAddressSpace: 1) + !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align [filtered], flags: DIFlagPublic) + !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____foo___vtable", scope: !2, file: !2, baseType: !8, align [filtered]) + !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__foo___vtable", baseType: !9, size: 64, align [filtered], dwarfAddressSpace: 1) !9 = !DIBasicType(name: "__VOID", encoding: DW_ATE_unsigned, flags: DIFlagPublic) !10 = !DIGlobalVariableExpression(var: !11, expr: !DIExpression()) !11 = distinct !DIGlobalVariable(name: "__bar__init", scope: !2, file: !2, line: 7, type: !12, isLocal: false, isDefinition: true) !12 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !13) - !13 = !DICompositeType(tag: DW_TAG_structure_type, name: "bar", scope: !2, file: !2, line: 7, size: 64, align: 64, flags: DIFlagPublic, elements: !14, identifier: "bar") + !13 = !DICompositeType(tag: DW_TAG_structure_type, name: "bar", scope: !2, file: !2, line: 7, size: 64, align [filtered], flags: DIFlagPublic, elements: !14, identifier: "bar") !14 = !{!15} - !15 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 64, align: 64, flags: DIFlagPublic) + !15 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 64, align [filtered], flags: DIFlagPublic) !16 = !{i32 2, !"Dwarf Version", i32 5} !17 = !{i32 2, !"Debug Info Version", i32 3} !18 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !19, splitDebugInlining: false) @@ -1940,28 +1940,28 @@ END_FUNCTION !1 = distinct !DIGlobalVariable(name: "__parent__init", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") !3 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) - !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "parent", scope: !2, file: !2, line: 2, size: 128, align: 64, flags: DIFlagPublic, elements: !5, identifier: "parent") + !4 = !DICompositeType(tag: DW_TAG_structure_type, name: "parent", scope: !2, file: !2, line: 2, size: 128, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "parent") !5 = !{!6, !10} - !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align: 64, flags: DIFlagPublic) - !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____parent___vtable", scope: !2, file: !2, baseType: !8, align: 64) - !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__parent___vtable", baseType: !9, size: 64, align: 64, dwarfAddressSpace: 1) + !6 = !DIDerivedType(tag: DW_TAG_member, name: "__vtable", scope: !2, file: !2, baseType: !7, size: 64, align [filtered], flags: DIFlagPublic) + !7 = !DIDerivedType(tag: DW_TAG_typedef, name: "__POINTER_TO____parent___vtable", scope: !2, file: !2, baseType: !8, align [filtered]) + !8 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__parent___vtable", baseType: !9, size: 64, align [filtered], dwarfAddressSpace: 1) !9 = !DIBasicType(name: "__VOID", encoding: DW_ATE_unsigned, flags: DIFlagPublic) - !10 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 4, baseType: !11, size: 32, align: 32, offset: 64, flags: DIFlagPublic) + !10 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 4, baseType: !11, size: 32, align [filtered], offset: 64, flags: DIFlagPublic) !11 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) !13 = distinct !DIGlobalVariable(name: "__child__init", scope: !2, file: !2, line: 8, type: !14, isLocal: false, isDefinition: true) !14 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !15) - !15 = !DICompositeType(tag: DW_TAG_structure_type, name: "child", scope: !2, file: !2, line: 8, size: 192, align: 64, flags: DIFlagPublic, elements: !16, identifier: "child") + !15 = !DICompositeType(tag: DW_TAG_structure_type, name: "child", scope: !2, file: !2, line: 8, size: 192, align [filtered], flags: DIFlagPublic, elements: !16, identifier: "child") !16 = !{!17, !18} - !17 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 128, align: 64, flags: DIFlagPublic) - !18 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 10, baseType: !11, size: 32, align: 32, offset: 128, flags: DIFlagPublic) + !17 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !4, size: 128, align [filtered], flags: DIFlagPublic) + !18 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 10, baseType: !11, size: 32, align [filtered], offset: 128, flags: DIFlagPublic) !19 = !DIGlobalVariableExpression(var: !20, expr: !DIExpression()) !20 = distinct !DIGlobalVariable(name: "__grandchild__init", scope: !2, file: !2, line: 14, type: !21, isLocal: false, isDefinition: true) !21 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !22) - !22 = !DICompositeType(tag: DW_TAG_structure_type, name: "grandchild", scope: !2, file: !2, line: 14, size: 256, align: 64, flags: DIFlagPublic, elements: !23, identifier: "grandchild") + !22 = !DICompositeType(tag: DW_TAG_structure_type, name: "grandchild", scope: !2, file: !2, line: 14, size: 256, align [filtered], flags: DIFlagPublic, elements: !23, identifier: "grandchild") !23 = !{!24, !25} - !24 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !15, size: 192, align: 64, flags: DIFlagPublic) - !25 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !2, file: !2, line: 16, baseType: !11, size: 32, align: 32, offset: 192, flags: DIFlagPublic) + !24 = !DIDerivedType(tag: DW_TAG_member, name: "SUPER", scope: !2, file: !2, baseType: !15, size: 192, align [filtered], flags: DIFlagPublic) + !25 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !2, file: !2, line: 16, baseType: !11, size: 32, align [filtered], offset: 192, flags: DIFlagPublic) !26 = !{i32 2, !"Dwarf Version", i32 5} !27 = !{i32 2, !"Debug Info Version", i32 3} !28 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !29, splitDebugInlining: false) @@ -1985,24 +1985,24 @@ END_FUNCTION !46 = distinct !DISubprogram(name: "main", linkageName: "main", scope: !2, file: !2, line: 20, type: !47, scopeLine: 20, flags: DIFlagPublic, spFlags: DISPFlagDefinition, unit: !28, retainedNodes: !33) !47 = !DISubroutineType(flags: DIFlagPublic, types: !48) !48 = !{null} - !49 = !DILocalVariable(name: "array_of_parent", scope: !46, file: !2, line: 22, type: !50, align: 64) - !50 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 384, align: 64, elements: !51) + !49 = !DILocalVariable(name: "array_of_parent", scope: !46, file: !2, line: 22, type: !50, align [filtered]) + !50 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 384, align [filtered], elements: !51) !51 = !{!52} !52 = !DISubrange(count: 3, lowerBound: 0) !53 = !DILocation(line: 22, column: 4, scope: !46) - !54 = !DILocalVariable(name: "array_of_child", scope: !46, file: !2, line: 23, type: !55, align: 64) - !55 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 576, align: 64, elements: !51) + !54 = !DILocalVariable(name: "array_of_child", scope: !46, file: !2, line: 23, type: !55, align [filtered]) + !55 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 576, align [filtered], elements: !51) !56 = !DILocation(line: 23, column: 4, scope: !46) - !57 = !DILocalVariable(name: "array_of_grandchild", scope: !46, file: !2, line: 24, type: !58, align: 64) - !58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !22, size: 768, align: 64, elements: !51) + !57 = !DILocalVariable(name: "array_of_grandchild", scope: !46, file: !2, line: 24, type: !58, align [filtered]) + !58 = !DICompositeType(tag: DW_TAG_array_type, baseType: !22, size: 768, align [filtered], elements: !51) !59 = !DILocation(line: 24, column: 4, scope: !46) - !60 = !DILocalVariable(name: "parent1", scope: !46, file: !2, line: 25, type: !4, align: 64) + !60 = !DILocalVariable(name: "parent1", scope: !46, file: !2, line: 25, type: !4, align [filtered]) !61 = !DILocation(line: 25, column: 4, scope: !46) - !62 = !DILocalVariable(name: "child1", scope: !46, file: !2, line: 26, type: !15, align: 64) + !62 = !DILocalVariable(name: "child1", scope: !46, file: !2, line: 26, type: !15, align [filtered]) !63 = !DILocation(line: 26, column: 4, scope: !46) - !64 = !DILocalVariable(name: "grandchild1", scope: !46, file: !2, line: 27, type: !22, align: 64) + !64 = !DILocalVariable(name: "grandchild1", scope: !46, file: !2, line: 27, type: !22, align [filtered]) !65 = !DILocation(line: 27, column: 4, scope: !46) - !66 = !DILocalVariable(name: "main", scope: !46, file: !2, line: 20, type: !11, align: 32) + !66 = !DILocalVariable(name: "main", scope: !46, file: !2, line: 20, type: !11, align [filtered]) !67 = !DILocation(line: 20, column: 9, scope: !46) !68 = !DILocation(line: 0, scope: !46) !69 = !DILocation(line: 30, column: 4, scope: !46) diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__dwarf_version_override.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__dwarf_version_override.snap index 4ac05760712..ae937cba997 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__dwarf_version_override.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__dwarf_version_override.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests.rs expression: codegen -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,7 +15,7 @@ target triple = "[filtered]" !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "gInt", scope: !2, file: !2, line: 5, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") -!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "myInt", scope: !2, file: !2, line: 2, baseType: !4, align: 32) +!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "myInt", scope: !2, file: !2, line: 2, baseType: !4, align [filtered]) !4 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !5 = !{i32 2, !"Dwarf Version", i32 4} !6 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_alias_type.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_alias_type.snap index d029ce1d8b7..da8c6cd38b3 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_alias_type.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_alias_type.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests.rs expression: codegen -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -16,7 +15,7 @@ target triple = "[filtered]" !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "gInt", scope: !2, file: !2, line: 5, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") -!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "myInt", scope: !2, file: !2, line: 2, baseType: !4, align: 32) +!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "myInt", scope: !2, file: !2, line: 2, baseType: !4, align [filtered]) !4 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !5 = !{i32 2, !"Dwarf Version", i32 5} !6 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_array_added_to_debug_info.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_array_added_to_debug_info.snap index 32148e8699f..d10db9574f3 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_array_added_to_debug_info.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_array_added_to_debug_info.snap @@ -1,7 +1,6 @@ --- source: src/codegen/tests/debug_tests.rs expression: codegen -snapshot_kind: text --- ; ModuleID = '' source_filename = "" @@ -18,19 +17,19 @@ target triple = "[filtered]" !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "a", scope: !2, file: !2, line: 3, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 352, align: 32, elements: !5) +!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 352, align [filtered], elements: !5) !4 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !5 = !{!6} !6 = !DISubrange(count: 11, lowerBound: 0) !7 = !DIGlobalVariableExpression(var: !8, expr: !DIExpression()) !8 = distinct !DIGlobalVariable(name: "b", scope: !2, file: !2, line: 4, type: !9, isLocal: false, isDefinition: true) -!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 3520, align: 32, elements: !10) +!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 3520, align [filtered], elements: !10) !10 = !{!6, !11} !11 = !DISubrange(count: 10, lowerBound: 11) !12 = !DIGlobalVariableExpression(var: !13, expr: !DIExpression()) !13 = distinct !DIGlobalVariable(name: "c", scope: !2, file: !2, line: 5, type: !14, isLocal: false, isDefinition: true) -!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 3520, align: 32, elements: !5) -!15 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 320, align: 32, elements: !16) +!14 = !DICompositeType(tag: DW_TAG_array_type, baseType: !15, size: 3520, align [filtered], elements: !5) +!15 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 320, align [filtered], elements: !16) !16 = !{!11} !17 = !{i32 2, !"Dwarf Version", i32 5} !18 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_enum_added_to_debug_info.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_enum_added_to_debug_info.snap index 324bb591e31..9180b408a10 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_enum_added_to_debug_info.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_enum_added_to_debug_info.snap @@ -24,12 +24,12 @@ target triple = "[filtered]" !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "en3", scope: !2, file: !2, line: 5, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") -!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__global_en3", scope: !2, file: !2, line: 5, baseType: !4, align: 64) +!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__global_en3", scope: !2, file: !2, line: 5, baseType: !4, align [filtered]) !4 = !DIBasicType(name: "LINT", size: 64, encoding: DW_ATE_signed, flags: DIFlagPublic) !5 = !DIGlobalVariableExpression(var: !6, expr: !DIExpression()) !6 = distinct !DIGlobalVariable(name: "en1.a", scope: !2, file: !2, line: 2, type: !7, isLocal: false, isDefinition: true) !7 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !8) -!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "en1", scope: !2, file: !2, line: 2, baseType: !9, align: 32) +!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "en1", scope: !2, file: !2, line: 2, baseType: !9, align [filtered]) !9 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !10 = !DIGlobalVariableExpression(var: !11, expr: !DIExpression()) !11 = distinct !DIGlobalVariable(name: "en1.b", scope: !2, file: !2, line: 2, type: !7, isLocal: false, isDefinition: true) @@ -38,7 +38,7 @@ target triple = "[filtered]" !14 = !DIGlobalVariableExpression(var: !15, expr: !DIExpression()) !15 = distinct !DIGlobalVariable(name: "en2.d", scope: !2, file: !2, line: 3, type: !16, isLocal: false, isDefinition: true) !16 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !17) -!17 = !DIDerivedType(tag: DW_TAG_typedef, name: "en2", scope: !2, file: !2, line: 3, baseType: !18, align: 8) +!17 = !DIDerivedType(tag: DW_TAG_typedef, name: "en2", scope: !2, file: !2, line: 3, baseType: !18, align [filtered]) !18 = !DIBasicType(name: "BYTE", size: 8, encoding: DW_ATE_unsigned, flags: DIFlagPublic) !19 = !DIGlobalVariableExpression(var: !20, expr: !DIExpression()) !20 = distinct !DIGlobalVariable(name: "en2.e", scope: !2, file: !2, line: 3, type: !16, isLocal: false, isDefinition: true) diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap index daad42631a9..c33550951e1 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_nested_struct_added_to_debug_info.snap @@ -63,15 +63,15 @@ entry: !1 = distinct !DIGlobalVariable(name: "__myStruct__init", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") !3 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !4) -!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 2, size: 192, align: 64, flags: DIFlagPublic, elements: !5, identifier: "myStruct") +!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 2, size: 192, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "myStruct") !5 = !{!6, !8} -!6 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 3, baseType: !7, size: 32, align: 32, flags: DIFlagPublic) +!6 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 3, baseType: !7, size: 32, align [filtered], flags: DIFlagPublic) !7 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) -!8 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 4, baseType: !9, size: 128, align: 64, offset: 64, flags: DIFlagPublic) -!9 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct2", scope: !2, file: !2, line: 8, size: 128, align: 64, flags: DIFlagPublic, elements: !10, identifier: "myStruct2") +!8 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 4, baseType: !9, size: 128, align [filtered], offset: 64, flags: DIFlagPublic) +!9 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct2", scope: !2, file: !2, line: 8, size: 128, align [filtered], flags: DIFlagPublic, elements: !10, identifier: "myStruct2") !10 = !{!11, !12} -!11 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 9, baseType: !7, size: 32, align: 32, flags: DIFlagPublic) -!12 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 10, baseType: !13, size: 64, align: 64, offset: 64, flags: DIFlagPublic) +!11 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 9, baseType: !7, size: 32, align [filtered], flags: DIFlagPublic) +!12 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 10, baseType: !13, size: 64, align [filtered], offset: 64, flags: DIFlagPublic) !13 = !DIBasicType(name: "LREAL", size: 64, encoding: DW_ATE_float, flags: DIFlagPublic) !14 = !DIGlobalVariableExpression(var: !15, expr: !DIExpression()) !15 = distinct !DIGlobalVariable(name: "__myStruct2__init", scope: !2, file: !2, line: 8, type: !16, isLocal: false, isDefinition: true) diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_pointer_added_to_debug_info.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_pointer_added_to_debug_info.snap index 9ff4815e4c8..bc52a2091bd 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_pointer_added_to_debug_info.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_pointer_added_to_debug_info.snap @@ -16,14 +16,14 @@ target triple = "[filtered]" !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "a", scope: !2, file: !2, line: 3, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") -!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____global_a", scope: !2, file: !2, baseType: !4, align: 64) -!4 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_a", baseType: !5, size: 64, align: 64, dwarfAddressSpace: 1) +!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____global_a", scope: !2, file: !2, baseType: !4, align [filtered]) +!4 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_a", baseType: !5, size: 64, align [filtered], dwarfAddressSpace: 1) !5 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !6 = !DIGlobalVariableExpression(var: !7, expr: !DIExpression()) !7 = distinct !DIGlobalVariable(name: "b", scope: !2, file: !2, line: 4, type: !8, isLocal: false, isDefinition: true) -!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____global_b", scope: !2, file: !2, baseType: !9, align: 64) -!9 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_b", baseType: !10, size: 64, align: 64, dwarfAddressSpace: 1) -!10 = !DICompositeType(tag: DW_TAG_array_type, baseType: !5, size: 352, align: 32, elements: !11) +!8 = !DIDerivedType(tag: DW_TAG_typedef, name: "__REF_TO____global_b", scope: !2, file: !2, baseType: !9, align [filtered]) +!9 = !DIDerivedType(tag: DW_TAG_pointer_type, name: "__global_b", baseType: !10, size: 64, align [filtered], dwarfAddressSpace: 1) +!10 = !DICompositeType(tag: DW_TAG_array_type, baseType: !5, size: 352, align [filtered], elements: !11) !11 = !{!12} !12 = !DISubrange(count: 11, lowerBound: 0) !13 = !{i32 2, !"Dwarf Version", i32 5} diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_string_added_to_debug_info.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_string_added_to_debug_info.snap index 6138b231787..58146cdd998 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_string_added_to_debug_info.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_string_added_to_debug_info.snap @@ -16,15 +16,15 @@ target triple = "[filtered]" !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "a", scope: !2, file: !2, line: 3, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") -!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !4, align: 8) -!4 = !DICompositeType(tag: DW_TAG_array_type, baseType: !5, size: 648, align: 8, elements: !6) +!3 = !DIDerivedType(tag: DW_TAG_typedef, name: "__STRING__81", scope: !2, file: !2, baseType: !4, align [filtered]) +!4 = !DICompositeType(tag: DW_TAG_array_type, baseType: !5, size: 648, align [filtered], elements: !6) !5 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic) !6 = !{!7} !7 = !DISubrange(count: 81, lowerBound: 0) !8 = !DIGlobalVariableExpression(var: !9, expr: !DIExpression()) !9 = distinct !DIGlobalVariable(name: "b", scope: !2, file: !2, line: 4, type: !10, isLocal: false, isDefinition: true) -!10 = !DIDerivedType(tag: DW_TAG_typedef, name: "__WSTRING__81", scope: !2, file: !2, baseType: !11, align: 16) -!11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 1296, align: 16, elements: !6) +!10 = !DIDerivedType(tag: DW_TAG_typedef, name: "__WSTRING__81", scope: !2, file: !2, baseType: !11, align [filtered]) +!11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !12, size: 1296, align [filtered], elements: !6) !12 = !DIBasicType(name: "WCHAR", size: 16, encoding: DW_ATE_UTF, flags: DIFlagPublic) !13 = !{i32 2, !"Dwarf Version", i32 5} !14 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap index 892ca523bdb..1f4ba021238 100644 --- a/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap +++ b/src/codegen/tests/snapshots/rusty__codegen__tests__debug_tests__global_var_struct_added_to_debug_info.snap @@ -41,15 +41,15 @@ entry: !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "b", scope: !2, file: !2, line: 12, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: "", directory: "") -!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 5632, align: 64, elements: !12) -!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 2, size: 512, align: 64, flags: DIFlagPublic, elements: !5, identifier: "myStruct") +!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 5632, align [filtered], elements: !12) +!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "myStruct", scope: !2, file: !2, line: 2, size: 512, align [filtered], flags: DIFlagPublic, elements: !5, identifier: "myStruct") !5 = !{!6, !8, !10} -!6 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 3, baseType: !7, size: 32, align: 32, flags: DIFlagPublic) +!6 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 3, baseType: !7, size: 32, align [filtered], flags: DIFlagPublic) !7 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) -!8 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 4, baseType: !9, size: 64, align: 64, offset: 64, flags: DIFlagPublic) +!8 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 4, baseType: !9, size: 64, align [filtered], offset: 64, flags: DIFlagPublic) !9 = !DIBasicType(name: "LREAL", size: 64, encoding: DW_ATE_float, flags: DIFlagPublic) -!10 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !2, file: !2, line: 5, baseType: !11, size: 352, align: 32, offset: 128, flags: DIFlagPublic) -!11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !7, size: 352, align: 32, elements: !12) +!10 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !2, file: !2, line: 5, baseType: !11, size: 352, align [filtered], offset: 128, flags: DIFlagPublic) +!11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !7, size: 352, align [filtered], elements: !12) !12 = !{!13} !13 = !DISubrange(count: 11, lowerBound: 0) !14 = !DIGlobalVariableExpression(var: !15, expr: !DIExpression()) diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap index b794311623f..6717cac72a5 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__actions_debug.snap @@ -74,11 +74,11 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "main", scope: !2, file: !2, line: 1, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: ".cfc", directory: "") -!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "main", scope: !2, file: !2, line: 1, size: 64, align: 64, flags: DIFlagPublic, elements: !4, identifier: "main") +!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "main", scope: !2, file: !2, line: 1, size: 64, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "main") !4 = !{!5, !7} -!5 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 1, baseType: !6, size: 32, align: 32, flags: DIFlagPublic) +!5 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !2, file: !2, line: 1, baseType: !6, size: 32, align [filtered], flags: DIFlagPublic) !6 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) -!7 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 1, baseType: !6, size: 32, align: 32, offset: 32, flags: DIFlagPublic) +!7 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 1, baseType: !6, size: 32, align [filtered], offset: 32, flags: DIFlagPublic) !8 = !{i32 2, !"Dwarf Version", i32 5} !9 = !{i32 2, !"Debug Info Version", i32 3} !10 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !11, splitDebugInlining: false) diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap index 7b678222f94..f8638a1dcb4 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__conditional_return_debug.snap @@ -52,7 +52,7 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !8 = !{} !9 = !DILocalVariable(name: "val", scope: !4, file: !3, line: 1, type: !7) !10 = !DILocation(line: 1, column: 30, scope: !4) -!11 = !DILocalVariable(name: "foo", scope: !4, file: !3, line: 1, type: !7, align: 32) +!11 = !DILocalVariable(name: "foo", scope: !4, file: !3, line: 1, type: !7, align [filtered]) !12 = !DILocation(line: 1, column: 9, scope: !4) !13 = !DILocation(line: 2, scope: !4) !14 = !DILocation(line: 3, scope: !4) diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap index 9f2dd1c3d38..0a3549e7f44 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__jump_debug.snap @@ -57,9 +57,9 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "foo", scope: !2, file: !2, line: 1, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: ".cfc", directory: "") -!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 1, size: 32, align: 64, flags: DIFlagPublic, elements: !4, identifier: "foo") +!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "foo", scope: !2, file: !2, line: 1, size: 32, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "foo") !4 = !{!5} -!5 = !DIDerivedType(tag: DW_TAG_member, name: "val", scope: !2, file: !2, line: 1, baseType: !6, size: 32, align: 32, flags: DIFlagPublic) +!5 = !DIDerivedType(tag: DW_TAG_member, name: "val", scope: !2, file: !2, line: 1, baseType: !6, size: 32, align [filtered], flags: DIFlagPublic) !6 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !7 = !{i32 2, !"Dwarf Version", i32 5} !8 = !{i32 2, !"Debug Info Version", i32 3} diff --git a/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap b/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap index 2bd8303317a..26095e84af7 100644 --- a/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap +++ b/tests/integration/snapshots/tests__integration__cfc__ir__sink_source_debug.snap @@ -49,9 +49,9 @@ attributes #0 = { nofree nosync nounwind readnone speculatable willreturn } !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) !1 = distinct !DIGlobalVariable(name: "main", scope: !2, file: !2, line: 1, type: !3, isLocal: false, isDefinition: true) !2 = !DIFile(filename: ".cfc", directory: "") -!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "main", scope: !2, file: !2, line: 1, size: 32, align: 64, flags: DIFlagPublic, elements: !4, identifier: "main") +!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "main", scope: !2, file: !2, line: 1, size: 32, align [filtered], flags: DIFlagPublic, elements: !4, identifier: "main") !4 = !{!5} -!5 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 1, baseType: !6, size: 32, align: 32, flags: DIFlagPublic) +!5 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !2, file: !2, line: 1, baseType: !6, size: 32, align [filtered], flags: DIFlagPublic) !6 = !DIBasicType(name: "DINT", size: 32, encoding: DW_ATE_signed, flags: DIFlagPublic) !7 = !{i32 2, !"Dwarf Version", i32 5} !8 = !{i32 2, !"Debug Info Version", i32 3} From c4cbb783bacc6dbbfca81836a904f0b7f3718325 Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Tue, 25 Nov 2025 14:37:13 +0000 Subject: [PATCH 08/18] update new test --- src/codegen/tests/typesystem_test.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/codegen/tests/typesystem_test.rs b/src/codegen/tests/typesystem_test.rs index a9647ae461c..4c20840864b 100644 --- a/src/codegen/tests/typesystem_test.rs +++ b/src/codegen/tests/typesystem_test.rs @@ -352,18 +352,18 @@ fn enum_typed_varargs_get_promoted() { define i32 @main() { entry: - %main = alloca i32, align 4 - %e1 = alloca i16, align 2 - %i1 = alloca i16, align 2 - store i16 10, i16* %e1, align 2 - store i16 10, i16* %i1, align 2 - store i32 0, i32* %main, align 4 - %load_e1 = load i16, i16* %e1, align 2 + %main = alloca i32, align [filtered] + %e1 = alloca i16, align [filtered] + %i1 = alloca i16, align [filtered] + store i16 10, i16* %e1, align [filtered] + store i16 10, i16* %i1, align [filtered] + store i32 0, i32* %main, align [filtered] + %load_e1 = load i16, i16* %e1, align [filtered] %0 = sext i16 %load_e1 to i32 - %load_i1 = load i16, i16* %i1, align 2 + %load_i1 = load i16, i16* %i1, align [filtered] %1 = sext i16 %load_i1 to i32 %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @utf08_literal_0, i32 0, i32 0), i32 %0, i32 %1) - %main_ret = load i32, i32* %main, align 4 + %main_ret = load i32, i32* %main, align [filtered] ret i32 %main_ret } "#); From c600d37f75519346d8e89845d860850c958d1149 Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Thu, 27 Nov 2025 10:52:39 +0100 Subject: [PATCH 09/18] add alignment tests --- compiler/plc_util/src/lib.rs | 19 +++ src/codegen/tests.rs | 1 + src/codegen/tests/alignment_tests.rs | 182 +++++++++++++++++++++++++++ src/codegen/tests/code_gen_tests.rs | 4 +- 4 files changed, 204 insertions(+), 2 deletions(-) create mode 100644 src/codegen/tests/alignment_tests.rs diff --git a/compiler/plc_util/src/lib.rs b/compiler/plc_util/src/lib.rs index 349f4f76aa5..022fd58ee56 100644 --- a/compiler/plc_util/src/lib.rs +++ b/compiler/plc_util/src/lib.rs @@ -20,3 +20,22 @@ macro_rules! filtered_assert_snapshot { settings.bind(|| insta::assert_snapshot!($value, @$snapshot)); }}; } + +#[macro_export] +macro_rules! filtered_assert_snapshot_with_alginments { + // Case for normal snapshot (no inline expected output) + ($value:expr) => {{ + let mut settings = insta::Settings::clone_current(); + settings.add_filter(r#"target datalayout = ".*""#, r#"target datalayout = "[filtered]""#); + settings.add_filter(r#"target triple = ".*""#, r#"target triple = "[filtered]""#); + settings.bind(|| insta::assert_snapshot!($value)) + }}; + + // Case for inline snapshot: expression @literal + ($value:expr, @$snapshot:literal) => {{ + let mut settings = insta::Settings::clone_current(); + settings.add_filter(r#"target datalayout = ".*""#, r#"target datalayout = "[filtered]""#); + settings.add_filter(r#"target triple = ".*""#, r#"target triple = "[filtered]""#); + settings.bind(|| insta::assert_snapshot!($value, @$snapshot)); + }}; +} diff --git a/src/codegen/tests.rs b/src/codegen/tests.rs index ccbe645acf0..5d2dda2b227 100644 --- a/src/codegen/tests.rs +++ b/src/codegen/tests.rs @@ -1,5 +1,6 @@ // Copyright (c) 2020 Ghaith Hachem and Mathias Rieder mod address_tests; +mod alignment_tests; mod code_gen_tests; mod codegen_error_messages_tests; mod compare_instructions_tests; diff --git a/src/codegen/tests/alignment_tests.rs b/src/codegen/tests/alignment_tests.rs new file mode 100644 index 00000000000..edb269c0bfe --- /dev/null +++ b/src/codegen/tests/alignment_tests.rs @@ -0,0 +1,182 @@ +use crate::test_utils::tests::codegen; +use plc_util::filtered_assert_snapshot_with_alginments; + +// Tests for aligment of datatypes on x86_64 and aarch64 +#[test] +fn test_datatype_alignment() { + let result = codegen( + r#"FUNCTION main +VAR +a : BYTE; // 1 byte +b : WORD; // 2 bytes +c : DWORD; // 4 bytes +d : LWORD; // 8 bytes +e : INT; // 2 bytes +f : DINT; // 4 bytes +g : LINT; // 8 bytes +h : REAL; // 4 bytes +i : LREAL; // 8 bytes +j : BOOL; // 1 byte +END_VAR +END_FUNCTION +"#, + ); + + // Arm assertion + #[cfg(target_arch = "aarch64")] + filtered_assert_snapshot_with_alginments!(result, @r#" + ; ModuleID = '' + source_filename = "" + target datalayout = "[filtered]" + target triple = "[filtered]" + + define void @main() { + entry: + %a = alloca i8, align 1 + %b = alloca i16, align 2 + %c = alloca i32, align 4 + %d = alloca i64, align 8 + %e = alloca i16, align 2 + %f = alloca i32, align 4 + %g = alloca i64, align 8 + %h = alloca float, align 4 + %i = alloca double, align 8 + %j = alloca i8, align 1 + store i8 0, i8* %a, align 1 + store i16 0, i16* %b, align 2 + store i32 0, i32* %c, align 4 + store i64 0, i64* %d, align 8 + store i16 0, i16* %e, align 2 + store i32 0, i32* %f, align 4 + store i64 0, i64* %g, align 8 + store float 0.000000e+00, float* %h, align 4 + store double 0.000000e+00, double* %i, align 8 + store i8 0, i8* %j, align 1 + ret void + } + "#); + + // x86_64 assertion + #[cfg(target_arch = "x86_64")] + filtered_assert_snapshot_with_alginments!(result, @r#" + ; ModuleID = '' + source_filename = "" + target datalayout = "[filtered]" + target triple = "[filtered]" + + define void @main() { + entry: + %a = alloca i8, align 1 + %b = alloca i16, align 2 + %c = alloca i32, align 4 + %d = alloca i64, align 8 + %e = alloca i16, align 2 + %f = alloca i32, align 4 + %g = alloca i64, align 8 + %h = alloca float, align 4 + %i = alloca double, align 8 + %j = alloca i8, align 1 + store i8 0, i8* %a, align 1 + store i16 0, i16* %b, align 2 + store i32 0, i32* %c, align 4 + store i64 0, i64* %d, align 8 + store i16 0, i16* %e, align 2 + store i32 0, i32* %f, align 4 + store i64 0, i64* %g, align 8 + store float 0.000000e+00, float* %h, align 4 + store double 0.000000e+00, double* %i, align 8 + store i8 0, i8* %j, align 1 + ret void + } + "#); +} + +#[test] +fn test_struct_alignment() { + let result = codegen( + r#"FUNCTION main + VAR + x : MyStruct; + y : MyStruct; + a : BOOL; + END_VAR + END_FUNCTION + TYPE + MyStruct : STRUCT + a : BYTE; // 1 byte + b : WORD; // 2 bytes + c : DWORD; // 4 bytes + d : LWORD; // 8 bytes + e : INT; // 2 bytes + f : DINT; // 4 bytes + g : LINT; // 8 bytes + h : REAL; // 4 bytes + i : LREAL; // 8 bytes + j : BOOL; // 1 byte + END_STRUCT + END_TYPE + "#, + ); + + // Arm assertion + #[cfg(target_arch = "aarch64")] + filtered_assert_snapshot_with_alginments!(result, @r#" + ; ModuleID = '' + source_filename = "" + target datalayout = "[filtered]" + target triple = "[filtered]" + + %MyStruct = type { i8, i16, i32, i64, i16, i32, i64, float, double, i8 } + + @__MyStruct__init = unnamed_addr constant %MyStruct zeroinitializer + + define void @main() { + entry: + %x = alloca %MyStruct, align 8 + %y = alloca %MyStruct, align 8 + %a = alloca i8, align 1 + %0 = bitcast %MyStruct* %x to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%MyStruct, %MyStruct* @__MyStruct__init, i32 0, i32 0), i64 ptrtoint (%MyStruct* getelementptr (%MyStruct, %MyStruct* null, i32 1) to i64), i1 false) + %1 = bitcast %MyStruct* %y to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 getelementptr inbounds (%MyStruct, %MyStruct* @__MyStruct__init, i32 0, i32 0), i64 ptrtoint (%MyStruct* getelementptr (%MyStruct, %MyStruct* null, i32 1) to i64), i1 false) + store i8 0, i8* %a, align 1 + ret void + } + + ; Function Attrs: argmemonly nofree nounwind willreturn + declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #0 + + attributes #0 = { argmemonly nofree nounwind willreturn } + "#); + + // x86_64 assertion + #[cfg(target_arch = "x86_64")] + filtered_assert_snapshot_with_alginments!(result, @r#" + ; ModuleID = '' + source_filename = "" + target datalayout = "[filtered]" + target triple = "[filtered]" + + %MyStruct = type { i8, i16, i32, i64, i16, i32, i64, float, double, i8 } + + @__MyStruct__init = unnamed_addr constant %MyStruct zeroinitializer + + define void @main() { + entry: + %x = alloca %MyStruct, align 8 + %y = alloca %MyStruct, align 8 + %a = alloca i8, align 1 + %0 = bitcast %MyStruct* %x to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%MyStruct, %MyStruct* @__MyStruct__init, i32 0, i32 0), i64 ptrtoint (%MyStruct* getelementptr (%MyStruct, %MyStruct* null, i32 1) to i64), i1 false) + %1 = bitcast %MyStruct* %y to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %1, i8* align 1 getelementptr inbounds (%MyStruct, %MyStruct* @__MyStruct__init, i32 0, i32 0), i64 ptrtoint (%MyStruct* getelementptr (%MyStruct, %MyStruct* null, i32 1) to i64), i1 false) + store i8 0, i8* %a, align 1 + ret void + } + + ; Function Attrs: argmemonly nofree nounwind willreturn + declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #0 + + attributes #0 = { argmemonly nofree nounwind willreturn } + "#); +} diff --git a/src/codegen/tests/code_gen_tests.rs b/src/codegen/tests/code_gen_tests.rs index aa93083bcd1..662d00668a7 100644 --- a/src/codegen/tests/code_gen_tests.rs +++ b/src/codegen/tests/code_gen_tests.rs @@ -4058,7 +4058,7 @@ fn methods_var_output() { " FUNCTION_BLOCK foo METHOD baz - VAR_OUTPUT + VAR_OUTPUT out : STRING; END_VAR out := 'hello'; @@ -4066,7 +4066,7 @@ fn methods_var_output() { END_FUNCTION_BLOCK FUNCTION main - VAR + VAR s: STRING; fb: foo; END_VAR From 943e9fe189b1b91397ad0f7ffe75dacb5f30c6da Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Thu, 27 Nov 2025 10:59:33 +0100 Subject: [PATCH 10/18] adjust the snapshot for arm alignments --- src/codegen/tests/alignment_tests.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/codegen/tests/alignment_tests.rs b/src/codegen/tests/alignment_tests.rs index edb269c0bfe..3dbe16491d4 100644 --- a/src/codegen/tests/alignment_tests.rs +++ b/src/codegen/tests/alignment_tests.rs @@ -32,16 +32,16 @@ END_FUNCTION define void @main() { entry: - %a = alloca i8, align 1 - %b = alloca i16, align 2 + %a = alloca i8, align 4 + %b = alloca i16, align 4 %c = alloca i32, align 4 %d = alloca i64, align 8 - %e = alloca i16, align 2 + %e = alloca i16, align 4 %f = alloca i32, align 4 %g = alloca i64, align 8 %h = alloca float, align 4 %i = alloca double, align 8 - %j = alloca i8, align 1 + %j = alloca i8, align 4 store i8 0, i8* %a, align 1 store i16 0, i16* %b, align 2 store i32 0, i32* %c, align 4 @@ -134,7 +134,7 @@ fn test_struct_alignment() { entry: %x = alloca %MyStruct, align 8 %y = alloca %MyStruct, align 8 - %a = alloca i8, align 1 + %a = alloca i8, align 4 %0 = bitcast %MyStruct* %x to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%MyStruct, %MyStruct* @__MyStruct__init, i32 0, i32 0), i64 ptrtoint (%MyStruct* getelementptr (%MyStruct, %MyStruct* null, i32 1) to i64), i1 false) %1 = bitcast %MyStruct* %y to i8* From fe733aeccf61e12071e686dc2dc3f13b859fcfa5 Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Fri, 7 Nov 2025 16:17:54 +0100 Subject: [PATCH 11/18] wip: add adrs, experimental skip externals not yet working as expected --- compiler/plc_ast/src/ast.rs | 5 + src/lowering/initializers.rs | 118 +++++++++- src/lowering/vtable.rs | 18 +- src/resolver/const_evaluator.rs | 3 +- src/tests/adr/initializer_functions_adr.rs | 250 +++++++++++++++++++++ 5 files changed, 379 insertions(+), 15 deletions(-) diff --git a/compiler/plc_ast/src/ast.rs b/compiler/plc_ast/src/ast.rs index f8038b39f22..5574b25a572 100644 --- a/compiler/plc_ast/src/ast.rs +++ b/compiler/plc_ast/src/ast.rs @@ -517,6 +517,11 @@ impl VariableBlock { VariableBlock::default().with_block_type(VariableBlockType::Global) } + pub fn with_linkage(mut self, linkage: LinkageType) -> Self { + self.linkage = linkage; + self + } + pub fn with_block_type(mut self, block_type: VariableBlockType) -> Self { self.kind = block_type; self diff --git a/src/lowering/initializers.rs b/src/lowering/initializers.rs index 5163c6e7c3a..4ae7338b6e3 100644 --- a/src/lowering/initializers.rs +++ b/src/lowering/initializers.rs @@ -127,15 +127,15 @@ impl InitVisitor { fn create_var_config_init(statements: Vec, mut id_provider: IdProvider) -> CompilationUnit { let loc = SourceLocation::internal_in_unit(Some(INIT_COMPILATION_UNIT)); - let pou = new_pou(VAR_CONFIG_INIT, id_provider.next_id(), vec![], PouType::Init, &loc); // this can probably just be internal - let implementation = new_implementation(VAR_CONFIG_INIT, statements, PouType::Init, loc); + let pou = new_pou(VAR_CONFIG_INIT, id_provider.next_id(), vec![], PouType::Init, LinkageType::Internal, &loc); // this can probably just be internal + let implementation = new_implementation(VAR_CONFIG_INIT, statements, PouType::Init, LinkageType::Internal, loc); new_unit(pou, implementation, INIT_COMPILATION_UNIT) } fn create_init_units(lowerer: &InitVisitor) -> Vec { let lookup = lowerer.unresolved_initializers.keys().map(|it| it.as_str()).collect::>(); lowerer - .unresolved_initializers + .unresolved_initializers .iter() .filter_map(|(container, init)| { // globals will be initialized in the `__init` body @@ -158,11 +158,11 @@ fn create_init_unit( let mut id_provider = lowerer.ctxt.id_provider.clone(); let init_fn_name = get_init_fn_name(container_name); log::trace!("creating {init_fn_name}"); - let (is_stateless, location) = lowerer + let (is_stateless, location, linkage) = lowerer .index .find_pou(container_name) - .map(|it| (it.is_function() || it.is_method(), it.get_location())) - .unwrap_or_else(|| (false, &lowerer.index.get_type_or_panic(container_name).location)); + .map(|it| (it.is_function() || it.is_method(), it.get_location(), *it.get_linkage())) + .unwrap_or_else(|| (false, &lowerer.index.get_type_or_panic(container_name).location, LinkageType::Internal)); if is_stateless { // functions do not get their own init-functions - @@ -188,7 +188,7 @@ fn create_init_unit( "self".to_string(), ); - let init_pou = new_pou(&init_fn_name, id_provider.next_id(), self_param, PouType::Init, &location); + let init_pou = new_pou(&init_fn_name, id_provider.next_id(), self_param, PouType::Init, linkage, &location); let mut statements = Vec::new(); @@ -236,7 +236,7 @@ fn create_init_unit( .collect::>(); let statements = [member_init_calls, statements].concat(); - let implementation = new_implementation(&init_fn_name, statements, PouType::Init, location); + let implementation = new_implementation(&init_fn_name, statements, PouType::Init, linkage, location); Some(new_unit(init_pou, implementation, INIT_COMPILATION_UNIT)) } @@ -261,8 +261,10 @@ fn create_user_init_units(lowerer: &InitVisitor) -> Vec { location: location.clone(), }])]; + + let linkage = lowerer.index.find_pou(container_name).map(|it|*it.get_linkage()).unwrap_or(LinkageType::Internal); let fn_name = get_user_init_fn_name(container_name); - let init_pou = new_pou(&fn_name, id_provider.next_id(), param, PouType::Init, &location); + let init_pou = new_pou(&fn_name, id_provider.next_id(), param, PouType::Init, linkage, &location); let mut statements = lowerer .index @@ -297,7 +299,7 @@ fn create_user_init_units(lowerer: &InitVisitor) -> Vec { AstFactory::create_call_statement(op, None, id_provider.next_id(), location.clone()); statements.push(call_statement); } - let implementation = new_implementation(&fn_name, statements, PouType::Init, location); + let implementation = new_implementation(&fn_name, statements, PouType::Init, linkage, location); new_unit(init_pou, implementation, INIT_COMPILATION_UNIT) }) @@ -319,6 +321,7 @@ fn create_init_wrapper_function( id_provider.next_id(), vec![], PouType::ProjectInit, + LinkageType::Internal, &SourceLocation::internal(), ); @@ -387,7 +390,7 @@ fn create_init_wrapper_function( let user_init_calls = get_global_user_init_statements(lowerer); let statements = [calls, statements, user_init_calls].concat(); let implementation = - new_implementation(init_symbol_name, statements, PouType::ProjectInit, SourceLocation::internal()); + new_implementation(init_symbol_name, statements, PouType::ProjectInit, LinkageType::Internal, SourceLocation::internal()); let mut global_init = new_unit(init_pou, implementation, init_symbol_name); if skip_var_config { @@ -449,6 +452,7 @@ fn new_pou( id: AstId, variable_blocks: Vec, kind: PouType, + linkage: LinkageType, location: &SourceLocation, ) -> Pou { Pou { @@ -473,6 +477,7 @@ fn new_implementation( name: &str, statements: Vec, pou_type: PouType, + linkage: LinkageType, location: SourceLocation, ) -> Implementation { Implementation { @@ -555,8 +560,13 @@ fn create_vtable_initializer(lowerer: &InitVisitor, ids: &mut IdProvider, pou_na #[cfg(test)] mod tests { + use inkwell::module::Linkage; + use insta::assert_debug_snapshot; + use plc_ast::ast::LinkageType; use test_utils::parse_and_validate_buffered_ast; + use crate::lowering::vtable; + #[test] fn usertype_todo_better_name_00() { let src = r#" @@ -1638,4 +1648,90 @@ mod tests { ] "#); } + + #[test] + fn function_block_initializer_with_base_call() { + let src = r#" + FUNCTION_BLOCK FB_Base + VAR + baseValue: DINT := 5; + END_VAR + END_FUNCTION_BLOCK + + FUNCTION_BLOCK FB_Derived EXTENDS FB_Base + VAR + derivedValue: DINT := 10; + END_VAR + END_FUNCTION_BLOCK + "#; + + let units = parse_and_validate_buffered_ast(src); + // Check that a base initializer call is generated + let init_unit = &units + .iter() + .find(|unit| unit.file.get_name().is_some_and(|name| name == "__initializers")) + .unwrap(); + let init_base = init_unit.implementations.iter().find(|it| it.name == "__init_fb_base").unwrap(); + assert_eq!(init_base.linkage, LinkageType::Internal); + // Check that a vtable_init for base was generated + let vtable_init_base = init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_base").unwrap(); + assert_eq!(vtable_init_base.linkage, LinkageType::Internal); + // Make sure the variable block containing the base vtable is internal + let variable_block = units[0].global_vars.iter().find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Base_instance")).unwrap(); + assert_eq!(variable_block.linkage, LinkageType::Internal); + // Make sure the derived initializer is still internal + let init_derived = init_unit.implementations.iter().find(|it| it.name == "__init_fb_derived").unwrap(); + assert_eq!(init_derived.linkage, LinkageType::Internal); + // Make sure the derived vtable initializer is still internal + let vtable_init_derived = init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_derived").unwrap(); + assert_eq!(vtable_init_derived.linkage, LinkageType::Internal); + // Make sure the variable block containing the derived vtable is internal + let variable_block = units[0].global_vars.iter().find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Derived_instance")).unwrap(); + assert_eq!(variable_block.linkage, LinkageType::Internal); + } + + + #[test] + fn function_block_initializer_with_external_base_call() { + let src = r#" + {external} + FUNCTION_BLOCK FB_Base + VAR + baseValue: DINT := 5; + END_VAR + END_FUNCTION_BLOCK + + FUNCTION_BLOCK FB_Derived EXTENDS FB_Base + VAR + derivedValue: DINT := 10; + END_VAR + END_FUNCTION_BLOCK + "#; + + let units = parse_and_validate_buffered_ast(src); + // Check that a base initializer call is generated + let init_unit = &units + .iter() + .find(|unit| unit.file.get_name().is_some_and(|name| name == "__initializers")) + .unwrap(); + let init_base = init_unit.implementations.iter().find(|it| it.name == "__init_fb_base").unwrap(); + assert_eq!(init_base.linkage, LinkageType::External); + // Check that a vtable_init for base was generated + let vtable_init_base = init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_base").unwrap(); + assert_eq!(vtable_init_base.linkage, LinkageType::External); + // Make sure the variable block containing the base vtable is internal + let variable_block = units[0].global_vars.iter().find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Base_instance")).unwrap(); + assert_eq!(variable_block.linkage, LinkageType::External); + // Make sure the derived initializer is still internal + let init_derived = init_unit.implementations.iter().find(|it| it.name == "__init_fb_derived").unwrap(); + assert_eq!(init_derived.linkage, LinkageType::Internal); + // Make sure the derived vtable initializer is still internal + let vtable_init_derived = init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_derived").unwrap(); + assert_eq!(vtable_init_derived.linkage, LinkageType::Internal); + // Make sure the variable block containing the derived vtable is internal + let variable_block = units[0].global_vars.iter().find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Derived_instance")).unwrap(); + assert_eq!(variable_block.linkage, LinkageType::Internal); + } + + } diff --git a/src/lowering/vtable.rs b/src/lowering/vtable.rs index 96e28620fc4..4b53ab91e69 100644 --- a/src/lowering/vtable.rs +++ b/src/lowering/vtable.rs @@ -89,7 +89,8 @@ impl VirtualTableGenerator { pub fn generate(&mut self, index: &Index, units: &mut Vec) { for unit in units { let mut definitions = Vec::new(); - let mut instances = Vec::new(); + let mut internal_instances = Vec::new(); + let mut external_instances = Vec::new(); for pou in unit.pous.iter_mut().filter(|pou| pou.kind.is_class() | pou.kind.is_function_block()) { self.patch_vtable_member(pou); @@ -97,11 +98,22 @@ impl VirtualTableGenerator { let instance = self.generate_vtable_instance(pou, &definition); definitions.push(definition); - instances.push(instance); + if pou.linkage == LinkageType::External { + external_instances.push(instance); + } else { + internal_instances.push(instance); + } } unit.user_types.extend(definitions); - unit.global_vars.push(VariableBlock::global().with_variables(instances)); + unit.global_vars.push(VariableBlock::global().with_variables(internal_instances)); + if !external_instances.is_empty() { + unit.global_vars.push( + VariableBlock::global() + .with_linkage(LinkageType::External) + .with_variables(external_instances), + ); + } } } diff --git a/src/resolver/const_evaluator.rs b/src/resolver/const_evaluator.rs index e2d01abb3b4..f1856a714b3 100644 --- a/src/resolver/const_evaluator.rs +++ b/src/resolver/const_evaluator.rs @@ -142,8 +142,9 @@ pub fn evaluate_constants(mut index: Index) -> (Index, Vec // there was an error during evaluation (Err(kind), _) => { //error during resolving + dbg!(index.get_mut_const_expressions().find_const_expression(&candidate)); unresolvable.push( - UnresolvableConstant::new(candidate, kind.get_reason()).with_kind(kind.clone()), + dbg!(UnresolvableConstant::new(candidate, kind.get_reason()).with_kind(kind.clone())), ); index .get_mut_const_expressions() diff --git a/src/tests/adr/initializer_functions_adr.rs b/src/tests/adr/initializer_functions_adr.rs index 64ce3832aca..2f02bfa7e09 100644 --- a/src/tests/adr/initializer_functions_adr.rs +++ b/src/tests/adr/initializer_functions_adr.rs @@ -1366,3 +1366,253 @@ fn initializing_method_variables() { } "#); } + +/// Initializers for external members happens in the external libraries +/// The current module defines such external initializers as declarations only +/// This also applies to any vtable initializers for external FBs +#[test] +fn external_initializers() { + let src = r" + {external} FUNCTION_BLOCK foo + VAR + x : DINT := 5; + END_VAR + END_FUNCTION_BLOCK + + FUNCTION main: DINT + VAR + fb: foo; + END_VAR + fb(); + END_FUNCTION + "; + + let res = generate_to_string("Test", vec![SourceCode::from(src)]).unwrap(); + filtered_assert_snapshot!(res, @r#" + ; ModuleID = '' + source_filename = "" + target datalayout = "[filtered]" + target triple = "[filtered]" + + %__vtable_foo = type { void (%foo*)* } + %foo = type { i32*, i32 } + + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] + @____vtable_foo__init = external unnamed_addr constant %__vtable_foo + @__foo__init = external unnamed_addr constant %foo + @__vtable_foo_instance = external global %__vtable_foo + + declare void @foo(%foo*) + declare void @__init_foo(%foo*) + declare void @__init___vtable_foo(%__vtable_foo*) + declare void @__user_init___vtable_foo(%__vtable_foo*) + declare void @__user_init_foo(%foo*) + + + define i32 @main() { + entry: + %main = alloca i32, align 4 + %fb = alloca %foo, align 8 + %0 = bitcast %foo* %fb to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%foo* @__foo__init to i8*), i64 ptrtoint (%foo* getelementptr (%foo, %foo* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align 4 + call void @__init_foo(%foo* %fb) + call void @__user_init_foo(%foo* %fb) + call void @foo(%foo* %fb) + %main_ret = load i32, i32* %main, align 4 + ret i32 %main_ret + } + + ; Function Attrs: argmemonly nofree nounwind willreturn + declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #0 + + define void @__init___Test() { + entry: + ret void + } + + attributes #0 = { argmemonly nofree nounwind willreturn } + "#); +} + +/// In inheritance scenarios, initializers for external parents happens in the external libraries +/// The local constructors only need to call the external initializers as declarations +#[test] +fn external_inherited_initializers() { + let src = r" + {external} FUNCTION_BLOCK foo + VAR + x : DINT := 5; + END_VAR + END_FUNCTION_BLOCK + + FUNCTION_BLOCK bar EXTENDS foo + VAR + y : DINT := 10; + END_VAR + END_FUNCTION_BLOCK + + FUNCTION main: DINT + VAR + fb: bar; + END_VAR + fb(); + END_FUNCTION + "; + + let res = generate_to_string("Test", vec![SourceCode::from(src)]).unwrap(); + filtered_assert_snapshot!(res, @r#" + ; ModuleID = '' + source_filename = "" + target datalayout = "[filtered]" + target triple = "[filtered]" + + %__vtable_bar = type { void (%bar*)* } + %bar = type { %foo, i32 } + %foo = type { i32*, i32 } + %__vtable_foo = type { void (%foo*)* } + + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] + @____vtable_bar__init = unnamed_addr constant %__vtable_bar zeroinitializer + @__bar__init = unnamed_addr constant %bar { %foo { i32* null, i32 5 }, i32 10 } + @__foo__init = external unnamed_addr constant %foo + @____vtable_foo__init = external unnamed_addr constant %__vtable_foo + @__vtable_bar_instance = global %__vtable_bar zeroinitializer + @__vtable_foo_instance = external global %__vtable_foo + + define void @bar(%bar* %0) { + entry: + %this = alloca %bar*, align 8 + store %bar* %0, %bar** %this, align 8 + %__foo = getelementptr inbounds %bar, %bar* %0, i32 0, i32 0 + %y = getelementptr inbounds %bar, %bar* %0, i32 0, i32 1 + ret void + } + + declare void @foo(%foo*) + declare void @__init_foo(%foo*) + declare void @__init___vtable_foo(%__vtable_foo*) + declare void @__user_init___vtable_foo(%__vtable_foo*) + declare void @__user_init_foo(%foo*) + + define i32 @main() { + entry: + %main = alloca i32, align 4 + %fb = alloca %bar, align 8 + %0 = bitcast %bar* %fb to i8* + call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 bitcast (%bar* @__bar__init to i8*), i64 ptrtoint (%bar* getelementptr (%bar, %bar* null, i32 1) to i64), i1 false) + store i32 0, i32* %main, align 4 + call void @__init_bar(%bar* %fb) + call void @__user_init_bar(%bar* %fb) + call void @bar(%bar* %fb) + %main_ret = load i32, i32* %main, align 4 + ret i32 %main_ret + } + + ; Function Attrs: argmemonly nofree nounwind willreturn + declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #0 + + define void @__init___vtable_bar(%__vtable_bar* %0) { + entry: + %self = alloca %__vtable_bar*, align 8 + store %__vtable_bar* %0, %__vtable_bar** %self, align 8 + %deref = load %__vtable_bar*, %__vtable_bar** %self, align 8 + %__body = getelementptr inbounds %__vtable_bar, %__vtable_bar* %deref, i32 0, i32 0 + store void (%bar*)* @bar, void (%bar*)** %__body, align 8 + ret void + } + + define void @__init_bar(%bar* %0) { + entry: + %self = alloca %bar*, align 8 + store %bar* %0, %bar** %self, align 8 + %deref = load %bar*, %bar** %self, align 8 + %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 + %__vtable = getelementptr inbounds %foo, %foo* %__foo, i32 0, i32 0 + store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align 8 + ret void + } + + define void @__user_init___vtable_bar(%__vtable_bar* %0) { + entry: + %self = alloca %__vtable_bar*, align 8 + store %__vtable_bar* %0, %__vtable_bar** %self, align 8 + ret void + } + + define void @__user_init_bar(%bar* %0) { + entry: + %self = alloca %bar*, align 8 + store %bar* %0, %bar** %self, align 8 + %deref = load %bar*, %bar** %self, align 8 + %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 + call void @__user_init_foo(%foo* %__foo) + ret void + } + + define void @__init___Test() { + entry: + call void @__init___vtable_bar(%__vtable_bar* @__vtable_bar_instance) + call void @__user_init___vtable_bar(%__vtable_bar* @__vtable_bar_instance) + ret void + } + + attributes #0 = { argmemonly nofree nounwind willreturn } + "#); +} + +/// External initializers being forward declared also applies to structs and programs +#[test] +fn external_struct_and_program_initializers() { + let src = r" + {external} TYPE myStruct: STRUCT + a : DINT; + END_STRUCT + END_TYPE + + {external} PROGRAM baz + VAR + fb: myStruct; + END_VAR + END_PROGRAM + FUNCTION main: DINT + VAR + END_VAR + baz(); + END_FUNCTION + "; + let res = generate_to_string("Test", vec![SourceCode::from(src)]).unwrap(); + filtered_assert_snapshot!(res, @r#" + ; ModuleID = '' + source_filename = "" + target datalayout = "[filtered]" + target triple = "[filtered]" + + %myStruct = type { i32 } + %baz = type { %myStruct } + + @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer + @baz_instance = external global %baz + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] + + declare void @baz(%baz*) + declare void @__init_mystruct(%myStruct*) + declare void @__init_baz(%baz*) + declare void @__user_init_baz(%baz*) + declare void @__user_init_myStruct(%myStruct*) + + define i32 @main() { + entry: + %main = alloca i32, align 4 + store i32 0, i32* %main, align 4 + call void @baz(%baz* @baz_instance) + %main_ret = load i32, i32* %main, align 4 + ret i32 %main_ret + } + + define void @__init___Test() { + entry: + ret void + } + "#); +} From ce6e198b346816e18700eb7f430e6ad2ea86e88a Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Tue, 11 Nov 2025 05:52:12 +0100 Subject: [PATCH 12/18] wip: init for externals reworked wip wip --- compiler/plc_ast/src/ast.rs | 17 +- compiler/plc_ast/src/pre_processor.rs | 28 +- compiler/plc_driver/src/pipelines.rs | 4 +- compiler/plc_lowering/src/inheritance.rs | 2 +- compiler/plc_lowering/src/initializer.rs | 88 +++ compiler/plc_lowering/src/lib.rs | 1 + .../complex_initializers.rs | 58 +- src/index.rs | 1 + src/index/indexer/implementation_indexer.rs | 1 + src/index/indexer/pou_indexer.rs | 2 + src/index/indexer/user_type_indexer.rs | 45 +- src/index/tests/index_tests.rs | 4 + src/lowering.rs | 548 +----------------- src/lowering/calls.rs | 5 +- src/lowering/helper.rs | 170 ++++++ src/lowering/init_visitor.rs | 382 ++++++++++++ src/lowering/initializers.rs | 101 ++-- src/lowering/vtable.rs | 1 + src/parser.rs | 1 + .../parse_error_statements_tests.rs | 2 + src/parser/tests/type_parser_tests.rs | 2 + src/resolver.rs | 3 + src/resolver/const_evaluator.rs | 4 +- src/resolver/generics.rs | 2 + src/resolver/tests/fnptr.rs | 1 + src/resolver/tests/resolve_literals_tests.rs | 6 +- src/tests/adr/initializer_functions_adr.rs | 191 +++++- src/typesystem.rs | 41 +- src/typesystem/tests.rs | 13 + 29 files changed, 1080 insertions(+), 644 deletions(-) create mode 100644 compiler/plc_lowering/src/initializer.rs create mode 100644 src/lowering/helper.rs create mode 100644 src/lowering/init_visitor.rs diff --git a/compiler/plc_ast/src/ast.rs b/compiler/plc_ast/src/ast.rs index 5574b25a572..f70e75ec6ac 100644 --- a/compiler/plc_ast/src/ast.rs +++ b/compiler/plc_ast/src/ast.rs @@ -296,6 +296,10 @@ impl Pou { pub fn is_generic(&self) -> bool { !self.generics.is_empty() } + + pub fn is_stateful(&self) -> bool { + matches!(self.kind, PouType::Program | PouType::FunctionBlock | PouType::Action | PouType::Class) + } } #[derive(Debug, PartialEq)] @@ -313,11 +317,19 @@ pub struct Implementation { pub access: Option, } +/// Marks declaration and linking requirements for an ast member #[derive(Debug, Copy, PartialEq, Eq, Clone, Hash)] pub enum LinkageType { + /// The element is declared in the project currently being complied Internal, + /// The element is declared externally and being used by the project External, + /// This indicates an element that should not have any declarations within the compiled project + /// For example a built in function is implied to exist but not declared BuiltIn, + // TODO: A private linkage indicates an internal element that should not be visible externally + // This is for example a static constructor that should not leak outside its module + // Private, } #[derive(Debug, PartialEq, Eq, Clone, Copy)] @@ -518,8 +530,8 @@ impl VariableBlock { } pub fn with_linkage(mut self, linkage: LinkageType) -> Self { - self.linkage = linkage; - self + self.linkage = linkage; + self } pub fn with_block_type(mut self, block_type: VariableBlockType) -> Self { @@ -684,6 +696,7 @@ pub struct UserTypeDeclaration { pub location: SourceLocation, /// stores the original scope for compiler-generated types pub scope: Option, + pub linkage: LinkageType, } impl Debug for UserTypeDeclaration { diff --git a/compiler/plc_ast/src/pre_processor.rs b/compiler/plc_ast/src/pre_processor.rs index 451a998abcc..72f5deb4ec7 100644 --- a/compiler/plc_ast/src/pre_processor.rs +++ b/compiler/plc_ast/src/pre_processor.rs @@ -61,8 +61,13 @@ pub fn pre_process(unit: &mut CompilationUnit, mut id_provider: IdProvider) { if let DataTypeDeclaration::Definition { mut data_type, location, scope } = *datatype { data_type.set_name(type_name); add_nested_datatypes(name, &mut data_type, &mut new_types, &location); - let data_type = - UserTypeDeclaration { data_type: *data_type, initializer: None, location, scope }; + let data_type = UserTypeDeclaration { + data_type: *data_type, + initializer: None, + location, + scope, + linkage: crate::ast::LinkageType::Internal, + }; new_types.push(data_type); } } @@ -289,6 +294,7 @@ fn preprocess_generic_structs(pou: &mut Pou) -> Vec { initializer: None, scope: Some(pou.name.clone()), location: pou.location.clone(), + linkage: crate::ast::LinkageType::Internal, }; types.push(data_type); generic_types.insert(binding.name.clone(), new_name); @@ -314,8 +320,13 @@ fn preprocess_return_type(pou: &mut Pou, types: &mut Vec) { if let Some(DataTypeDeclaration::Definition { mut data_type, location, scope }) = datatype { data_type.set_name(type_name); add_nested_datatypes(pou.name.as_str(), &mut data_type, types, &location); - let data_type = - UserTypeDeclaration { data_type: *data_type, initializer: None, location, scope }; + let data_type = UserTypeDeclaration { + data_type: *data_type, + initializer: None, + location, + scope, + linkage: crate::ast::LinkageType::Internal, + }; types.push(data_type); } } @@ -350,7 +361,13 @@ fn pre_process_variable_data_type( // create index entry add_nested_datatypes(new_type_name.as_str(), &mut data_type, types, &location); data_type.set_name(new_type_name); - types.push(UserTypeDeclaration { data_type: *data_type, initializer: None, location, scope }); + types.push(UserTypeDeclaration { + data_type: *data_type, + initializer: None, + location, + scope, + linkage: crate::ast::LinkageType::Internal, + }); } //make sure it gets generated } @@ -379,6 +396,7 @@ fn add_nested_datatypes( initializer: None, location: location.clone(), scope, + linkage: crate::ast::LinkageType::Internal, }); } } diff --git a/compiler/plc_driver/src/pipelines.rs b/compiler/plc_driver/src/pipelines.rs index ccd39949ad3..541c54c3d04 100644 --- a/compiler/plc_driver/src/pipelines.rs +++ b/compiler/plc_driver/src/pipelines.rs @@ -24,8 +24,8 @@ use plc::{ index::{indexer, FxIndexSet, Index}, linker::LinkerType, lowering::{ - calls::AggregateTypeLowerer, polymorphism::PolymorphicCallLowerer, property::PropertyLowerer, - vtable::VirtualTableGenerator, InitVisitor, + calls::AggregateTypeLowerer, init_visitor::InitVisitor, polymorphism::PolymorphicCallLowerer, + property::PropertyLowerer, vtable::VirtualTableGenerator, }, output::FormatOption, parser::parse_file, diff --git a/compiler/plc_lowering/src/inheritance.rs b/compiler/plc_lowering/src/inheritance.rs index f6e1f68b9b4..3b78ae74734 100644 --- a/compiler/plc_lowering/src/inheritance.rs +++ b/compiler/plc_lowering/src/inheritance.rs @@ -51,7 +51,7 @@ //! END_FUNCTION_BLOCK //! ``` -use plc::{index::Index, lowering::create_call_statement, resolver::AnnotationMap}; +use plc::{index::Index, lowering::helper::create_call_statement, resolver::AnnotationMap}; use plc_ast::{ ast::{ Assignment, AstFactory, AstNode, AstStatement, CallStatement, CompilationUnit, DataTypeDeclaration, diff --git a/compiler/plc_lowering/src/initializer.rs b/compiler/plc_lowering/src/initializer.rs new file mode 100644 index 00000000000..12e98dbcf44 --- /dev/null +++ b/compiler/plc_lowering/src/initializer.rs @@ -0,0 +1,88 @@ +//! The initializer lowering module is responsible for additing initialization logic +//! to PLC AST nodes. This includes generating default values for variables, handling +//! constant expressions, and ensuring that all necessary initializations are present +//! before code generation. The module traverses the AST and modifies nodes as needed +//! to include initialization code, making sure that the resulting AST is ready for +//! further compilation stages. +//! Initialization logic is as follows: +//! - Every struct(and POU) has an optional implicit initializer for constant fields. +//! - The name for this initializer is `_init` +//! - The field is always private to the module +//! - Every struct(and POU) has a constructor for fields with pointer assignments or non-constant values +//! - The name for this constructor is `_ctor` +//! - The constructor is always public and implicitly uses the implicit initializer +//! - Variables of the struct are initialized using the implicit initializer if their value is +//! derived at compile time, otherwise the constructor is used. +//! - Global variables are initialized in a global constructor function called `__global_ctor` +//! - This function is called per module inside the static initialization code +//! - The function is private to the module +//! - Stateless POUs (functions and methods) are initialized during their call. +//! - Variables of a stateless POU of a struct type are initialized using the constructor call. +//! - External POUs and struct constructors are marked as `extern` and have no body. +//! - External variables are not re-initialized in the global constructor, they are assumed to be +//! initialized externally. +//! - Bulit-in types and variables are not re-initialized in the global +//! constructor. + +use plc::index::{FxIndexMap, Index}; +use plc_ast::{ast::AstNode, visitor::AstVisitor}; + +enum Body { + Internal(Vec), + External, + None, +} + +pub struct Initializer<'idx> { + index: &'idx Index, + implicit_initializers: FxIndexMap, + constructors: FxIndexMap, + global_constructor: Vec, +} + +//TODO: might need to be a mutable ast visitor +impl AstVisitor for Initializer<'_> { + fn visit_compilation_unit(&mut self, unit: &plc_ast::ast::CompilationUnit) { + // Read all structs and POU structs, collect their implicit initializers if available + unit.pous.iter().for_each(|pou| { + // find the pou index entry + if let Some(pie) = self.index.find_pou_type(&pou.name) { + pie.initial_value + } + }); + // Add a call to the constructor to memcpy the imlicit initializer + // For each of the call statement or reference in the pou initializer, add an assignment to + // the constructor + } +} + +impl Initializer<'_> { + pub fn new(index: &Index) -> Initializer<'_> { + Initializer { + index, + implicit_initializers: FxIndexMap::default(), + constructors: FxIndexMap::default(), + global_constructor: Vec::new(), + } + } +} + +mod tests { + #[test] + fn struct_gets_imlicit_initializer_and_constructor() {} + + #[test] + fn struct_gets_constructor() {} + + #[test] + fn nested_structs_get_initializers_and_constructors() {} + + #[test] + fn variable_with_pointer_initializer_is_added_to_constructor() {} + + #[test] + fn enum_default_values_in_struct() {} + + #[test] + fn nested_struct_with_different_default_values() {} +} diff --git a/compiler/plc_lowering/src/lib.rs b/compiler/plc_lowering/src/lib.rs index 3536067db21..3d7fec623fd 100644 --- a/compiler/plc_lowering/src/lib.rs +++ b/compiler/plc_lowering/src/lib.rs @@ -5,6 +5,7 @@ use plc::{ use plc_ast::{ast::AstNode, provider::IdProvider}; pub mod inheritance; +pub mod initializer; #[cfg(test)] mod tests; diff --git a/src/codegen/tests/initialization_test/complex_initializers.rs b/src/codegen/tests/initialization_test/complex_initializers.rs index f127e46ca62..1a101d7f591 100644 --- a/src/codegen/tests/initialization_test/complex_initializers.rs +++ b/src/codegen/tests/initialization_test/complex_initializers.rs @@ -3333,15 +3333,15 @@ fn user_init_called_when_declared_as_external() { target datalayout = "[filtered]" target triple = "[filtered]" - %prog = type { %foo } - %foo = type { i32*, i16, i16 } %__vtable_foo = type { void (%foo*)*, void (%foo*)* } + %foo = type { i32*, i16, i16 } + %prog = type { %foo } + @__vtable_foo_instance = external global %__vtable_foo @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @prog_instance = global %prog zeroinitializer @__foo__init = external unnamed_addr constant %foo @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer - @__vtable_foo_instance = global %__vtable_foo zeroinitializer declare void @foo(%foo*) @@ -3354,6 +3354,7 @@ fn user_init_called_when_declared_as_external() { ret void } +<<<<<<< HEAD define void @__init___vtable_foo(%__vtable_foo* %0) { entry: %self = alloca %__vtable_foo*, align [filtered] @@ -3367,13 +3368,42 @@ fn user_init_called_when_declared_as_external() { ret void } +||||||| parent of 377683538c (wip) + define void @__init___vtable_foo(%__vtable_foo* %0) { + entry: + %self = alloca %__vtable_foo*, align 8 + store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + %deref = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %__body = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref, i32 0, i32 0 + store void (%foo*)* @foo, void (%foo*)** %__body, align 8 + %deref1 = load %__vtable_foo*, %__vtable_foo** %self, align 8 + %FB_INIT = getelementptr inbounds %__vtable_foo, %__vtable_foo* %deref1, i32 0, i32 1 + store void (%foo*)* @foo__FB_INIT, void (%foo*)** %FB_INIT, align 8 + ret void + } + +======= +>>>>>>> 377683538c (wip) define void @__init_prog(%prog* %0) { entry: +<<<<<<< HEAD %self = alloca %prog*, align [filtered] store %prog* %0, %prog** %self, align [filtered] +||||||| parent of 377683538c (wip) + %self = alloca %prog*, align 8 + store %prog* %0, %prog** %self, align 8 +======= + %self = alloca %prog*, align 8 + store %prog* %0, %prog** %self, align 8 + %deref = load %prog*, %prog** %self, align 8 + %f = getelementptr inbounds %prog, %prog* %deref, i32 0, i32 0 + call void @__init_foo(%foo* %f) +>>>>>>> 377683538c (wip) ret void } + declare void @__init_foo(%foo*) + define void @__user_init_prog(%prog* %0) { entry: %self = alloca %prog*, align [filtered] @@ -3384,6 +3414,7 @@ fn user_init_called_when_declared_as_external() { ret void } +<<<<<<< HEAD define void @__user_init_foo(%foo* %0) { entry: %self = alloca %foo*, align [filtered] @@ -3399,13 +3430,30 @@ fn user_init_called_when_declared_as_external() { store %__vtable_foo* %0, %__vtable_foo** %self, align [filtered] ret void } +||||||| parent of 377683538c (wip) + define void @__user_init_foo(%foo* %0) { + entry: + %self = alloca %foo*, align 8 + store %foo* %0, %foo** %self, align 8 + %deref = load %foo*, %foo** %self, align 8 + call void @foo__FB_INIT(%foo* %deref) + ret void + } + + define void @__user_init___vtable_foo(%__vtable_foo* %0) { + entry: + %self = alloca %__vtable_foo*, align 8 + store %__vtable_foo* %0, %__vtable_foo** %self, align 8 + ret void + } +======= + declare void @__user_init_foo(%foo*) +>>>>>>> 377683538c (wip) define void @__init___Test() { entry: call void @__init_prog(%prog* @prog_instance) - call void @__init___vtable_foo(%__vtable_foo* @__vtable_foo_instance) call void @__user_init_prog(%prog* @prog_instance) - call void @__user_init___vtable_foo(%__vtable_foo* @__vtable_foo_instance) ret void } "#); diff --git a/src/index.rs b/src/index.rs index b3b76c8b5ca..3f96c36de13 100644 --- a/src/index.rs +++ b/src/index.rs @@ -1166,6 +1166,7 @@ impl Default for TypeIndex { information: DataTypeInformation::Void, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: LinkageType::Internal, }, } } diff --git a/src/index/indexer/implementation_indexer.rs b/src/index/indexer/implementation_indexer.rs index f978f8ac85b..8e4458cc6ed 100644 --- a/src/index/indexer/implementation_indexer.rs +++ b/src/index/indexer/implementation_indexer.rs @@ -43,6 +43,7 @@ impl<'i> ImplementationIndexer<'i> { }, nature: TypeNature::Derived, location: implementation.name_location.clone(), + linkage: implementation.linkage, }; self.index.register_pou(PouIndexEntry::create_action_entry( diff --git a/src/index/indexer/pou_indexer.rs b/src/index/indexer/pou_indexer.rs index 6a6bc4f52a5..4de82e5a01f 100644 --- a/src/index/indexer/pou_indexer.rs +++ b/src/index/indexer/pou_indexer.rs @@ -60,6 +60,7 @@ impl<'i> PouIndexer<'i> { }, nature: TypeNature::Any, location: pou.name_location.clone(), + linkage: pou.linkage, }; match &pou.kind { @@ -316,6 +317,7 @@ pub fn register_byref_pointer_type_for(index: &mut Index, inner_type_name: &str, }, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: ast::LinkageType::Internal, }); } diff --git a/src/index/indexer/user_type_indexer.rs b/src/index/indexer/user_type_indexer.rs index 7ebd0139fa0..349c6441cec 100644 --- a/src/index/indexer/user_type_indexer.rs +++ b/src/index/indexer/user_type_indexer.rs @@ -1,8 +1,8 @@ use plc_ast::{ ast::{ flatten_expression_list, get_enum_element_name, Assignment, AstFactory, AstNode, AstStatement, - AutoDerefType, DataType, DataTypeDeclaration, RangeStatement, TypeNature, UserTypeDeclaration, - Variable, + AutoDerefType, DataType, DataTypeDeclaration, LinkageType, RangeStatement, TypeNature, + UserTypeDeclaration, Variable, }, literals::AstLiteral, visitor::{AstVisitor, Walker}, @@ -58,9 +58,12 @@ impl AstVisitor for UserTypeIndexer<'_, '_> { fn visit_data_type(&mut self, data_type: &DataType) { match &data_type { - DataType::StructType { name: Some(name), variables } => { - self.index_struct_type(name, variables, StructSource::OriginalDeclaration) - } + DataType::StructType { name: Some(name), variables } => self.index_struct_type( + name, + variables, + StructSource::OriginalDeclaration, + self.user_type.linkage, + ), DataType::EnumType { name: Some(name), numeric_type, elements } => { self.index_enum_type(name, numeric_type, elements) } @@ -142,6 +145,7 @@ impl UserTypeIndexer<'_, '_> { }, nature: TypeNature::__VLA, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::BuiltIn, }); // define internal vla members @@ -225,6 +229,7 @@ impl UserTypeIndexer<'_, '_> { inner_type_name: referenced_type, ndims, }), + LinkageType::Internal, ); } @@ -267,7 +272,7 @@ impl UserTypeIndexer<'_, '_> { dimensions, }; - self.register_type(name, information, TypeNature::Any); + self.register_type(name, information, TypeNature::Any, LinkageType::Internal); let global_init_name = crate::index::get_initializer_name(name); // TODO unfortunately we cannot share const-expressions between multiple @@ -321,7 +326,7 @@ impl UserTypeIndexer<'_, '_> { referenced_type: numeric_type.to_string(), }; - self.register_type(name, information, TypeNature::Int); + self.register_type(name, information, TypeNature::Int, LinkageType::Internal); } fn index_sub_range_type(&mut self, name: &str, referenced_type: &str, bounds: Option<&AstNode>) { @@ -337,16 +342,23 @@ impl UserTypeIndexer<'_, '_> { DataTypeInformation::Alias { name: name.into(), referenced_type: referenced_type.into() } }; - self.register_type(name, information, TypeNature::Int); + self.register_type(name, information, TypeNature::Int, LinkageType::Internal); } - fn register_type(&mut self, name: &str, information: DataTypeInformation, nature: TypeNature) { + fn register_type( + &mut self, + name: &str, + information: DataTypeInformation, + nature: TypeNature, + linkage: LinkageType, + ) { self.index.register_type(typesystem::DataType { name: name.into(), initial_value: self.pending_initializer, information, nature, location: self.user_type.location.clone(), + linkage, }); } @@ -357,7 +369,7 @@ impl UserTypeIndexer<'_, '_> { nature: *nature, }; - self.register_type(name, information, TypeNature::Any); + self.register_type(name, information, TypeNature::Any, LinkageType::Internal); } fn index_string_type(&mut self, name: &str, is_wide: bool, size: Option<&AstNode>) { @@ -388,7 +400,7 @@ impl UserTypeIndexer<'_, '_> { None => TypeSize::from_literal((DEFAULT_STRING_LEN + 1).into()), }; let information = DataTypeInformation::String { size, encoding }; - self.register_type(name, information, TypeNature::String); + self.register_type(name, information, TypeNature::String, LinkageType::Internal); //TODO: can we reuse this? if let Some(init) = self.pending_initializer { @@ -434,10 +446,17 @@ impl UserTypeIndexer<'_, '_> { information, nature: TypeNature::Any, location: self.user_type.location.clone(), + linkage: plc_ast::ast::LinkageType::Internal, }); } - fn index_struct_type(&mut self, name: &str, variables: &[Variable], source: StructSource) { + fn index_struct_type( + &mut self, + name: &str, + variables: &[Variable], + source: StructSource, + linkage: LinkageType, + ) { let scope = Some(name.to_string()); let members = variables .iter() @@ -480,7 +499,7 @@ impl UserTypeIndexer<'_, '_> { let nature = source.get_type_nature(); let information = DataTypeInformation::Struct { name: name.to_owned(), members, source }; - self.register_type(name, information, nature); + self.register_type(name, information, nature, linkage); //Generate an initializer for the struct let global_struct_name = crate::index::get_initializer_name(name); diff --git a/src/index/tests/index_tests.rs b/src/index/tests/index_tests.rs index 95451265403..c51895c9047 100644 --- a/src/index/tests/index_tests.rs +++ b/src/index/tests/index_tests.rs @@ -862,6 +862,7 @@ fn pre_processing_generates_generic_types() { initializer: None, location: SourceLocation::internal(), scope: Some("myFunc".into()), + linkage: LinkageType::Internal, }; assert_eq!(format!("{expected:?}"), format!("{:?}", ast.user_types[0])); @@ -896,6 +897,7 @@ fn pre_processing_generates_nested_generic_types() { initializer: None, location: SourceLocation::internal(), scope: Some("myFunc".into()), + linkage: LinkageType::Internal, }; assert_eq!(format!("{expected:?}"), format!("{:?}", ast.user_types[0])); @@ -1831,6 +1833,7 @@ fn aliased_hardware_access_variable_creates_global_var_for_address() { "", ), }, + linkage: Internal, }, ) "#); @@ -1901,6 +1904,7 @@ fn aliased_hardware_access_variable_is_indexed_as_a_pointer() { "", ), }, + linkage: Internal, }, ) "#); diff --git a/src/lowering.rs b/src/lowering.rs index 12ffc2300d6..c0c7874ca77 100644 --- a/src/lowering.rs +++ b/src/lowering.rs @@ -1,549 +1,7 @@ -use crate::{ - index::{get_init_fn_name, Index, PouIndexEntry, VariableIndexEntry}, - resolver::const_evaluator::UnresolvableConstant, -}; -use initializers::{get_user_init_fn_name, Init, InitAssignments, Initializers, GLOBAL_SCOPE}; -use plc_ast::{ - ast::{ - Assignment, AstFactory, AstNode, AstStatement, CallStatement, CompilationUnit, ConfigVariable, - DataType, LinkageType, PouType, ReferenceExpr, - }, - mut_visitor::{AstVisitorMut, WalkerMut}, - provider::IdProvider, -}; -use plc_source::source_location::SourceLocation; -use rustc_hash::FxHashMap; - pub mod calls; -mod initializers; +pub mod helper; +pub mod init_visitor; +pub mod initializers; pub mod polymorphism; pub mod property; pub mod vtable; - -pub struct InitVisitor { - index: Index, - unresolved_initializers: Initializers, - var_config_initializers: Vec, - user_inits: FxHashMap, - ctxt: Context, -} - -impl InitVisitor { - pub fn visit( - mut units: Vec, - index: Index, - unresolvables: Vec, - id_provider: IdProvider, - init_symbol_name: &'static str, - ) -> Vec { - let mut visitor = Self::new(index, unresolvables, id_provider); - // before visiting, we need to collect all candidates for user-defined init functions - units.iter_mut().for_each(|unit| { - visitor.collect_user_init_candidates(unit); - }); - // visit all units - units.iter_mut().for_each(|unit| { - visitor.visit_compilation_unit(unit); - }); - - visitor.extend_ast(units, init_symbol_name) - } - - fn new( - index: Index, - unresolved_initializers: Vec, - id_provider: IdProvider, - ) -> Self { - Self { - index, - unresolved_initializers: Initializers::new(&unresolved_initializers), - var_config_initializers: vec![], - user_inits: FxHashMap::default(), - ctxt: Context::new(id_provider), - } - } - - fn walk_with_scope(&mut self, t: &mut T, pou_name: Option>) - where - T: WalkerMut, - { - let old = self.ctxt.scope(pou_name.map(Into::into)); - t.walk(self); - self.ctxt.scope(old); - } - - fn collect_user_init_candidates(&mut self, unit: &mut CompilationUnit) { - // collect all candidates for user-defined init functions - for pou in unit.pous.iter().filter(|it| matches!(it.kind, PouType::FunctionBlock | PouType::Program)) - { - // add the POU to potential `FB_INIT` candidates - self.user_inits - .insert(pou.name.to_owned(), self.index.find_method(&pou.name, "FB_INIT").is_some()); - } - - for user_type in - unit.user_types.iter_mut().filter(|it| matches!(it.data_type, DataType::StructType { .. })) - { - // add the struct to potential `STRUCT_INIT` candidates - if let Some(name) = user_type.data_type.get_name() { - self.user_inits.insert(name.to_string(), false); - }; - } - } - - fn update_initializer(&mut self, variable: &mut plc_ast::ast::Variable) { - // flat references to stateful pou-local variables need to have a qualifier added, so they can be resolved in the init functions - let scope = self.ctxt.get_scope().as_ref().map(|it| it.as_str()).unwrap_or(GLOBAL_SCOPE); - let needs_qualifier = |flat_ref| { - let rhs = self.index.find_member(scope, flat_ref); - let lhs = self.index.find_member(scope, variable.get_name()); - let Some(pou) = self.index.find_pou(scope) else { return Ok(false) }; - if !(pou.is_function() || pou.is_method()) - && lhs.is_some_and(|it| !it.is_temp()) - && rhs.is_some_and(|it| it.is_temp()) - { - // Unable to initialize a stateful member variable with an address of a temporary value since it doesn't exist at the time of initialization - // On top of that, even if we were to initialize it, it would lead to a dangling pointer/potential use-after-free - return Err(AstFactory::create_empty_statement( - SourceLocation::internal(), - self.ctxt.get_id_provider().next_id(), - )); - } - Ok(match pou { - PouIndexEntry::Program { .. } - | PouIndexEntry::FunctionBlock { .. } - | PouIndexEntry::Class { .. } - // we only want to add qualifiers to local, non-temporary variables - if rhs.is_some_and(|it| !it.is_temp()) && lhs.is_some_and(|it| !it.is_temp())=> - { - true - } - _ => false, - }) - }; - - if let Some(initializer) = variable.initializer.as_ref() { - let type_name = - variable.data_type_declaration.get_name().expect("Must have a type at this point"); - let data_type = self.index.get_effective_type_or_void_by_name(type_name).get_type_information(); - if !data_type.is_pointer() { - return; - } - - let updated_initializer = match &initializer.get_stmt() { - // no call-statement in the initializer, so something like `a AT b` or `a : REFERENCE TO ... REF= b` - AstStatement::ReferenceExpr(_) => { - initializer.get_flat_reference_name().and_then(|flat_ref| { - needs_qualifier(flat_ref).map_or_else(Option::Some, |q| { - q.then_some("self") - .map(|it| create_member_reference(it, self.ctxt.get_id_provider(), None)) - .and_then(|base| { - initializer.get_flat_reference_name().map(|it| { - create_member_reference(it, self.ctxt.get_id_provider(), Some(base)) - }) - }) - }) - }) - } - // we found a call-statement, must be `a : REF_TO ... := REF(b) | ADR(b)` - AstStatement::CallStatement(CallStatement { operator, parameters }) => parameters - .as_ref() - .and_then(|it| it.as_ref().get_flat_reference_name()) - .and_then(|flat_ref| { - let op = operator.as_ref().get_flat_reference_name()?; - needs_qualifier(flat_ref).map_or_else(Option::Some, |q| { - q.then(|| { - create_call_statement( - op, - flat_ref, - Some("self"), - self.ctxt.id_provider.clone(), - &initializer.location, - ) - }) - }) - }), - _ => return, - }; - - self.unresolved_initializers.insert_initializer( - scope, - Some(&variable.name), - &updated_initializer.or(Some(initializer.clone())), - ); - } - } - - fn add_init_statements(&mut self, implementation: &mut plc_ast::ast::Implementation) { - let predicate = |var: &VariableIndexEntry| { - var.is_temp() - || var.is_var_external() - || (matches!(implementation.pou_type, PouType::Function | PouType::Method { .. }) - && var.is_local()) - }; - let strip_temporaries = |inits: &mut InitAssignments| { - let mut temps = InitAssignments::default(); - let ids = inits - .iter() - .filter(|(id, _)| self.index.find_member(&implementation.name, id).is_some_and(predicate)) - .map(|(id, _)| id.to_owned()) - .collect::>(); - - for id in ids { - if let Some(init) = inits.swap_remove(&id) { - temps.insert(id.to_owned(), init); - }; - } - - temps - }; - - // remove all initializers for the current implementation/pou - // XXX: this changes the order of init-statements in init-pous. but since assignments should still be ordered before call-statements, - // this should be fine => edge cases? - let Some(mut inits) = self.unresolved_initializers.swap_remove(&implementation.name) else { - return; - }; - - // remove all non-stateful variable entries - let temps = strip_temporaries(&mut inits); - // re-enter the remaining initializers - self.unresolved_initializers.insert(implementation.name.to_owned(), inits); - - // collect simple assignments - let assignments = temps.into_iter().filter_map(|(lhs, init)| { - init.as_ref().map(|it| { - let lhs_ty = self - .index - .find_member(&implementation.name, &lhs) - .map(|it| { - self.index - .get_effective_type_or_void_by_name(it.get_type_name()) - .get_type_information() - }) - .unwrap(); - if lhs_ty.is_reference_to() || lhs_ty.is_alias() { - // XXX: ignore REF_TO for temp variables since they can be generated regularly - let rhs = if let AstStatement::CallStatement(CallStatement { - parameters: Some(parameter), - .. - }) = it.get_stmt() - { - parameter - } else { - it - }; - // `REFERENCE TO` assignments in a POU body are automatically dereferenced and require the `REF=` operator to assign a pointer instead. - create_ref_assignment(&lhs, None, rhs, self.ctxt.get_id_provider()) - } else { - create_assignment(&lhs, None, it, self.ctxt.get_id_provider()) - } - }) - }); - - // collect necessary call statements to init-functions and user-defined init-functions - let mut implicit_calls = Vec::new(); - let mut user_init_calls = Vec::new(); - self.index.get_pou_members(&implementation.name).iter().filter(|var| predicate(var)).for_each( - |var| { - let dti = - self.index.get_effective_type_or_void_by_name(var.get_type_name()).get_type_information(); - let is_external = self - .index - .find_pou(dti.get_name()) - .is_some_and(|it| it.get_linkage() == &LinkageType::External); - if dti.is_struct() && !is_external { - implicit_calls.push(create_call_statement( - &get_init_fn_name(dti.get_name()), - var.get_name(), - None, - self.ctxt.get_id_provider(), - &implementation.name_location, - )); - } - if self.user_inits.contains_key(dti.get_name()) { - user_init_calls.push(create_call_statement( - &get_user_init_fn_name(dti.get_name()), - var.get_name(), - None, - self.ctxt.get_id_provider(), - &implementation.name_location, - )); - } - }, - ); - - let stmts = assignments - .chain(implicit_calls) - .chain(user_init_calls) - .chain(std::mem::take(&mut implementation.statements)) - .collect::>(); - implementation.statements = stmts; - } - - /// Updates the scope and initialized variable for struct types. Adds entries for each encountered struct - /// (this includes POU-structs, i.e. programs, ...) to the initializer map if no entry is present - fn update_struct_initializers(&mut self, user_type: &mut plc_ast::ast::UserTypeDeclaration) { - let effective_type = - user_type.data_type.get_name().and_then(|it| self.index.find_effective_type_by_name(it)); - if let DataType::StructType { ref mut variables, .. } = &mut user_type.data_type { - let Some(ty) = effective_type else { - return user_type.walk(self); - }; - let name = ty.get_name(); - - for variable in variables { - self.unresolved_initializers.maybe_insert_initializer( - name, - Some(&variable.name), - &variable.initializer, - ); - - // XXX: Very duct-tapey but essentially we now have two initializers, one in the struct datatype - // definition itself (`DataType::StructType { initializer: Some(), ... }`) and one in the - // `__init_*` function now. The former is unresolvable because it has the raw initializer, e.g. - // `foo := (a := (b := (c := REF(...))))` whereas the latter is resolvable because it yields something - // like `foo.a.b.c := REF(...)`. Thus we remove the initializer from the struct datatype definition - // as the codegen would otherwise fail at generating them and result in a `Cannot generate values for..` - // Literals and references are ignored however, since they are resolvable and / or constant. - if variable.initializer.as_ref().is_some_and(|opt| !opt.is_literal() && !opt.is_reference()) { - variable.initializer = None; - } - } - - // add container to keys if not already present - self.unresolved_initializers.maybe_insert_initializer(name, None, &user_type.initializer); - } - } - - fn maybe_add_global_instance_initializer(&mut self, variable: &plc_ast::ast::Variable) { - let Some(global) = self.index.find_global_variable(variable.get_name()) else { - return; - }; - - let info = - self.index.get_effective_type_or_void_by_name(global.get_type_name()).get_type_information(); - - if !info.is_struct() - || self - .index - .find_pou(info.get_name()) - .is_some_and(|it| it.get_linkage() == &LinkageType::External) - { - return; - } - - self.unresolved_initializers.maybe_insert_initializer(GLOBAL_SCOPE, Some(variable.get_name()), &None); - } - - fn collect_var_config_assignments(&mut self, var_config: &[ConfigVariable]) { - let assignments = var_config.iter().map(|var| { - AstFactory::create_assignment(var.reference.clone(), var.address.clone(), self.ctxt.next_id()) - }); - self.var_config_initializers.extend(assignments); - } -} - -impl AstVisitorMut for InitVisitor { - fn visit_compilation_unit(&mut self, unit: &mut CompilationUnit) { - self.collect_var_config_assignments(&unit.var_config); - unit.walk(self) - } - - fn visit_implementation(&mut self, implementation: &mut plc_ast::ast::Implementation) { - self.add_init_statements(implementation); - implementation.walk(self); - } - - fn visit_variable(&mut self, variable: &mut plc_ast::ast::Variable) { - self.maybe_add_global_instance_initializer(variable); - self.update_initializer(variable); - variable.walk(self); - } - - fn visit_user_type_declaration(&mut self, user_type: &mut plc_ast::ast::UserTypeDeclaration) { - self.update_struct_initializers(user_type); - user_type.walk(self); - } - - fn visit_data_type(&mut self, data_type: &mut DataType) { - if matches!(data_type, plc_ast::ast::DataType::StructType { .. }) { - self.walk_with_scope(data_type, data_type.get_name().map(ToOwned::to_owned)) - } else { - data_type.walk(self) - } - } - - fn visit_pou(&mut self, pou: &mut plc_ast::ast::Pou) { - if !matches!(pou.linkage, LinkageType::External | LinkageType::BuiltIn) { - self.unresolved_initializers.maybe_insert_initializer(&pou.name, None, &None); - } - - self.walk_with_scope(pou, Some(&pou.name.to_owned())); - } -} - -#[derive(Clone, Default)] -struct Context { - /// optional context for references (e.g. `x` may mean `POU.x` if used inside `POU` body or `STRUCT.x` if `x` is a member of `STRUCT`) - scope: Option, - - pub id_provider: IdProvider, -} - -// TODO: use &str with lifetimes, requires loads of changes to the visitor/walker traits -impl Context { - fn new(id_provider: IdProvider) -> Self { - Self { scope: None, id_provider } - } - - /// updates the context's scope and returns the previous value - fn scope(&mut self, pou: Option) -> Option { - std::mem::replace(&mut self.scope, pou) - } - - fn get_scope(&self) -> &Option { - &self.scope - } - - fn get_id_provider(&self) -> IdProvider { - self.id_provider.clone() - } - - fn next_id(&mut self) -> usize { - self.id_provider.next_id() - } -} - -pub fn create_member_reference_with_location( - ident: &str, - mut id_provider: IdProvider, - base: Option, - location: SourceLocation, -) -> AstNode { - AstFactory::create_member_reference( - AstFactory::create_identifier(ident, location, id_provider.next_id()), - base, - id_provider.next_id(), - ) -} - -fn create_member_reference(ident: &str, id_provider: IdProvider, base: Option) -> AstNode { - create_member_reference_with_location(ident, id_provider, base, SourceLocation::internal()) -} - -/// Takes some expression such as `bar := (baz := (qux := ADR(val)), baz2 := (qux := ADR(val)))` returning all final -/// assignment paths such as [`bar.baz.qux := ADR(val)`, `bar.baz2.qux := ADR(val)`]. -fn create_assignment_paths(node: &AstNode, id_provider: IdProvider) -> Vec> { - match node.get_stmt() { - AstStatement::Assignment(Assignment { left, right }) => { - let mut result = create_assignment_paths(right, id_provider.clone()); - for inner in result.iter_mut() { - inner.insert(0, left.as_ref().clone()); - } - result - } - AstStatement::ExpressionList(nodes) => { - let mut result = vec![]; - for node in nodes { - let inner = create_assignment_paths(node, id_provider.clone()); - result.extend(inner); - } - result - } - AstStatement::ParenExpression(node) => create_assignment_paths(node, id_provider), - _ => vec![vec![node.clone()]], - } -} - -/// Takes some expression such as `foo : FooStruct := (bar := (baz := (qux := ADR(val)), baz2 := (qux := ADR(val))));` -/// and returns assignments of form [`foo.bar.baz.qux := ADR(val)`, `foo.bar.baz2.qux := ADR(val)`]. -fn create_assignments_from_initializer( - var_ident: &str, - self_ident: Option<&str>, - rhs: &Option, - mut id_provider: IdProvider, -) -> Vec { - let Some(initializer) = rhs else { - return Vec::new(); - }; - - let mut result = vec![]; - for mut path in create_assignment_paths(initializer, id_provider.clone()) { - path.insert(0, create_member_reference(var_ident, id_provider.clone(), None)); - if self_ident.is_some() { - path.insert(0, create_member_reference("self", id_provider.clone(), None)); - } - - let right = path.pop().expect("must have at least one node in the path"); - let mut left = path.pop().expect("must have at least one node in the path"); - - for node in path.into_iter().rev() { - insert_base_node(&mut left, node); - } - - result.push(AstFactory::create_assignment(left, right, id_provider.next_id())); - } - - result -} - -/// Inserts a new base node into the member reference chain. For example a call such as `insert_base_node("b.c", a")` -/// will yield `a.b.c`. -fn insert_base_node(member: &mut AstNode, new_base: AstNode) { - match &mut member.stmt { - AstStatement::ReferenceExpr(ReferenceExpr { base, .. }) => match base { - Some(inner) => insert_base_node(inner, new_base), - None => { - // We hit the end of the chain, simply replace the base (which must be None) with the new one - base.replace(Box::new(new_base)); - } - }, - - _ => panic!("invalid function call, expected a member reference"), - } -} - -fn create_ref_assignment( - lhs_ident: &str, - base_ident: Option<&str>, - rhs: &AstNode, - mut id_provider: IdProvider, -) -> AstNode { - let lhs = create_member_reference( - lhs_ident, - id_provider.clone(), - base_ident.map(|id| create_member_reference(id, id_provider.clone(), None)), - ); - AstFactory::create_ref_assignment(lhs, rhs.to_owned(), id_provider.next_id()) -} - -fn create_assignment( - lhs_ident: &str, - base_ident: Option<&str>, - rhs: &AstNode, - mut id_provider: IdProvider, -) -> AstNode { - let lhs = create_member_reference( - lhs_ident, - id_provider.clone(), - base_ident.map(|id| create_member_reference(id, id_provider.clone(), None)), - ); - AstFactory::create_assignment(lhs, rhs.to_owned(), id_provider.next_id()) -} - -pub fn create_call_statement( - operator: &str, - member_id: &str, - base_id: Option<&str>, - mut id_provider: IdProvider, - location: &SourceLocation, -) -> AstNode { - let op = create_member_reference(operator, id_provider.clone(), None); - let param = create_member_reference( - member_id, - id_provider.clone(), - base_id.map(|it| create_member_reference(it, id_provider.clone(), None)), - ); - AstFactory::create_call_statement(op, Some(param), id_provider.next_id(), location.clone()) -} diff --git a/src/lowering/calls.rs b/src/lowering/calls.rs index 43a3c3c6434..10a8da48f02 100644 --- a/src/lowering/calls.rs +++ b/src/lowering/calls.rs @@ -62,6 +62,7 @@ use plc_source::source_location::SourceLocation; use crate::{ index::Index, + lowering::helper::create_member_reference_with_location, resolver::{AnnotationMap, StatementAnnotation}, }; @@ -316,7 +317,7 @@ impl AstVisitorMut for AggregateTypeLowerer { self.push_statement(alloca); let location = stmt.parameters.as_ref().map(|it| it.get_location()).unwrap_or_default(); let id = stmt.parameters.as_ref().map(|it| it.get_id()).unwrap_or(self.id_provider.next_id()); - let reference = super::create_member_reference_with_location( + let reference = create_member_reference_with_location( &name, self.id_provider.clone(), None, @@ -368,7 +369,7 @@ impl AstVisitorMut for AggregateTypeLowerer { }; stmt.parameters.replace(Box::new(AstFactory::create_expression_list(parameters, location, id))); //steal parameters, add one to the start, return parameters - let mut reference = super::create_member_reference_with_location( + let mut reference = create_member_reference_with_location( &name, self.id_provider.clone(), None, diff --git a/src/lowering/helper.rs b/src/lowering/helper.rs new file mode 100644 index 00000000000..f7fa3ee2416 --- /dev/null +++ b/src/lowering/helper.rs @@ -0,0 +1,170 @@ +use plc_ast::{ + ast::{Assignment, AstFactory, AstNode, AstStatement, ReferenceExpr}, + provider::IdProvider, +}; +use plc_source::source_location::SourceLocation; + +#[derive(Clone, Default)] +pub struct Context { + /// optional context for references (e.g. `x` may mean `POU.x` if used inside `POU` body or `STRUCT.x` if `x` is a member of `STRUCT`) + scope: Option, + + pub id_provider: IdProvider, +} + +// TODO: use &str with lifetimes, requires loads of changes to the visitor/walker traits +impl Context { + pub fn new(id_provider: IdProvider) -> Self { + Self { scope: None, id_provider } + } + + /// updates the context's scope and returns the previous value + pub fn scope(&mut self, pou: Option) -> Option { + std::mem::replace(&mut self.scope, pou) + } + + pub fn get_scope(&self) -> &Option { + &self.scope + } + + pub fn get_id_provider(&self) -> IdProvider { + self.id_provider.clone() + } + + pub fn next_id(&mut self) -> usize { + self.id_provider.next_id() + } +} + +pub fn create_member_reference_with_location( + ident: &str, + mut id_provider: IdProvider, + base: Option, + location: SourceLocation, +) -> AstNode { + AstFactory::create_member_reference( + AstFactory::create_identifier(ident, location, id_provider.next_id()), + base, + id_provider.next_id(), + ) +} + +pub fn create_member_reference(ident: &str, id_provider: IdProvider, base: Option) -> AstNode { + create_member_reference_with_location(ident, id_provider, base, SourceLocation::internal()) +} + +/// Takes some expression such as `bar := (baz := (qux := ADR(val)), baz2 := (qux := ADR(val)))` returning all final +/// assignment paths such as [`bar.baz.qux := ADR(val)`, `bar.baz2.qux := ADR(val)`]. +pub fn create_assignment_paths(node: &AstNode, id_provider: IdProvider) -> Vec> { + match node.get_stmt() { + AstStatement::Assignment(Assignment { left, right }) => { + let mut result = create_assignment_paths(right, id_provider.clone()); + for inner in result.iter_mut() { + inner.insert(0, left.as_ref().clone()); + } + result + } + AstStatement::ExpressionList(nodes) => { + let mut result = vec![]; + for node in nodes { + let inner = create_assignment_paths(node, id_provider.clone()); + result.extend(inner); + } + result + } + AstStatement::ParenExpression(node) => create_assignment_paths(node, id_provider), + _ => vec![vec![node.clone()]], + } +} + +/// Takes some expression such as `foo : FooStruct := (bar := (baz := (qux := ADR(val)), baz2 := (qux := ADR(val))));` +/// and returns assignments of form [`foo.bar.baz.qux := ADR(val)`, `foo.bar.baz2.qux := ADR(val)`]. +pub fn create_assignments_from_initializer( + var_ident: &str, + self_ident: Option<&str>, + rhs: &Option, + mut id_provider: IdProvider, +) -> Vec { + let Some(initializer) = rhs else { + return Vec::new(); + }; + + let mut result = vec![]; + for mut path in create_assignment_paths(initializer, id_provider.clone()) { + path.insert(0, create_member_reference(var_ident, id_provider.clone(), None)); + if self_ident.is_some() { + path.insert(0, create_member_reference("self", id_provider.clone(), None)); + } + + let right = path.pop().expect("must have at least one node in the path"); + let mut left = path.pop().expect("must have at least one node in the path"); + + for node in path.into_iter().rev() { + insert_base_node(&mut left, node); + } + + result.push(AstFactory::create_assignment(left, right, id_provider.next_id())); + } + + result +} + +/// Inserts a new base node into the member reference chain. For example a call such as `insert_base_node("b.c", a")` +/// will yield `a.b.c`. +pub fn insert_base_node(member: &mut AstNode, new_base: AstNode) { + match &mut member.stmt { + AstStatement::ReferenceExpr(ReferenceExpr { base, .. }) => match base { + Some(inner) => insert_base_node(inner, new_base), + None => { + // We hit the end of the chain, simply replace the base (which must be None) with the new one + base.replace(Box::new(new_base)); + } + }, + + _ => panic!("invalid function call, expected a member reference"), + } +} + +pub fn create_ref_assignment( + lhs_ident: &str, + base_ident: Option<&str>, + rhs: &AstNode, + mut id_provider: IdProvider, +) -> AstNode { + let lhs = create_member_reference( + lhs_ident, + id_provider.clone(), + base_ident.map(|id| create_member_reference(id, id_provider.clone(), None)), + ); + AstFactory::create_ref_assignment(lhs, rhs.to_owned(), id_provider.next_id()) +} + +pub fn create_assignment( + lhs_ident: &str, + base_ident: Option<&str>, + rhs: &AstNode, + mut id_provider: IdProvider, +) -> AstNode { + let lhs = create_member_reference( + lhs_ident, + id_provider.clone(), + base_ident.map(|id| create_member_reference(id, id_provider.clone(), None)), + ); + AstFactory::create_assignment(lhs, rhs.to_owned(), id_provider.next_id()) +} + +pub fn create_call_statement( + operator: &str, + member_id: &str, + base_id: Option<&str>, + mut id_provider: IdProvider, + location: &SourceLocation, +) -> AstNode { + let op = create_member_reference(operator, id_provider.clone(), None); + let param = create_member_reference( + member_id, + id_provider.clone(), + base_id.map(|it| create_member_reference(it, id_provider.clone(), None)), + ); + AstFactory::create_call_statement(op, Some(param), id_provider.next_id(), location.clone()) +} diff --git a/src/lowering/init_visitor.rs b/src/lowering/init_visitor.rs new file mode 100644 index 00000000000..ce84a927322 --- /dev/null +++ b/src/lowering/init_visitor.rs @@ -0,0 +1,382 @@ +use super::initializers::{get_user_init_fn_name, Init, InitAssignments, Initializers, GLOBAL_SCOPE}; +use crate::{ + index::{get_init_fn_name, Index, PouIndexEntry, VariableIndexEntry}, + lowering::helper::{ + create_assignment, create_call_statement, create_member_reference, create_ref_assignment, Context, + }, + resolver::const_evaluator::UnresolvableConstant, +}; +use plc_ast::{ + ast::{ + AstFactory, AstNode, AstStatement, CallStatement, CompilationUnit, ConfigVariable, DataType, + LinkageType, PouType, + }, + mut_visitor::{AstVisitorMut, WalkerMut}, + provider::IdProvider, +}; +use plc_source::source_location::SourceLocation; +use rustc_hash::FxHashMap; + +pub struct InitVisitor { + pub index: Index, + pub unresolved_initializers: Initializers, + pub var_config_initializers: Vec, + pub user_inits: FxHashMap, + pub ctxt: Context, +} + +impl InitVisitor { + pub fn visit( + mut units: Vec, + index: Index, + unresolvables: Vec, + id_provider: IdProvider, + init_symbol_name: &'static str, + ) -> Vec { + let mut visitor = Self::new(index, unresolvables, id_provider); + // before visiting, we need to collect all candidates for user-defined init functions + units.iter_mut().for_each(|unit| { + visitor.collect_user_init_candidates(unit); + }); + // visit all units + units.iter_mut().for_each(|unit| { + visitor.visit_compilation_unit(unit); + }); + + visitor.extend_ast(units, init_symbol_name) + } + + fn new( + index: Index, + unresolved_initializers: Vec, + id_provider: IdProvider, + ) -> Self { + let unresolved_initializers = Initializers::new(&unresolved_initializers, &index); + Self { + index, + unresolved_initializers, + var_config_initializers: vec![], + user_inits: FxHashMap::default(), + ctxt: Context::new(id_provider), + } + } + + fn walk_with_scope(&mut self, t: &mut T, pou_name: Option>) + where + T: WalkerMut, + { + let old = self.ctxt.scope(pou_name.map(Into::into)); + t.walk(self); + self.ctxt.scope(old); + } + + fn collect_user_init_candidates(&mut self, unit: &mut CompilationUnit) { + // collect all candidates for user-defined init functions + for pou in unit + .pous + .iter() + .filter(|it| matches!(it.kind, PouType::FunctionBlock | PouType::Program)) + .filter(|it| !matches!(it.linkage, LinkageType::BuiltIn)) + { + // add the POU to potential `FB_INIT` candidates + self.user_inits + .insert(pou.name.to_owned(), self.index.find_method(&pou.name, "FB_INIT").is_some()); + } + + for user_type in unit + .user_types + .iter_mut() + .filter(|it| matches!(it.data_type, DataType::StructType { .. })) + .filter(|it| !matches!(it.linkage, LinkageType::BuiltIn)) + { + // add the struct to potential `STRUCT_INIT` candidates + if let Some(name) = user_type.data_type.get_name() { + self.user_inits.insert(name.to_string(), false); + }; + } + } + + fn update_initializer(&mut self, variable: &mut plc_ast::ast::Variable) { + // flat references to stateful pou-local variables need to have a qualifier added, so they can be resolved in the init functions + let scope = self.ctxt.get_scope().as_ref().map(|it| it.as_str()).unwrap_or(GLOBAL_SCOPE); + let needs_qualifier = |flat_ref| { + let rhs = self.index.find_member(scope, flat_ref); + let lhs = self.index.find_member(scope, variable.get_name()); + let Some(pou) = self.index.find_pou(scope) else { return Ok(false) }; + if !(pou.is_function() || pou.is_method()) + && lhs.is_some_and(|it| !it.is_temp()) + && rhs.is_some_and(|it| it.is_temp()) + { + // Unable to initialize a stateful member variable with an address of a temporary value since it doesn't exist at the time of initialization + // On top of that, even if we were to initialize it, it would lead to a dangling pointer/potential use-after-free + return Err(AstFactory::create_empty_statement( + SourceLocation::internal(), + self.ctxt.get_id_provider().next_id(), + )); + } + Ok(match pou { + PouIndexEntry::Program { .. } + | PouIndexEntry::FunctionBlock { .. } + | PouIndexEntry::Class { .. } + // we only want to add qualifiers to local, non-temporary variables + if rhs.is_some_and(|it| !it.is_temp()) && lhs.is_some_and(|it| !it.is_temp())=> + { + true + } + _ => false, + }) + }; + + if let Some(initializer) = variable.initializer.as_ref() { + let type_name = + variable.data_type_declaration.get_name().expect("Must have a type at this point"); + let data_type = self.index.get_effective_type_or_void_by_name(type_name).get_type_information(); + if !data_type.is_pointer() { + return; + } + + let updated_initializer = match &initializer.get_stmt() { + // no call-statement in the initializer, so something like `a AT b` or `a : REFERENCE TO ... REF= b` + AstStatement::ReferenceExpr(_) => { + initializer.get_flat_reference_name().and_then(|flat_ref| { + needs_qualifier(flat_ref).map_or_else(Option::Some, |q| { + q.then_some("self") + .map(|it| create_member_reference(it, self.ctxt.get_id_provider(), None)) + .and_then(|base| { + initializer.get_flat_reference_name().map(|it| { + create_member_reference(it, self.ctxt.get_id_provider(), Some(base)) + }) + }) + }) + }) + } + // we found a call-statement, must be `a : REF_TO ... := REF(b) | ADR(b)` + AstStatement::CallStatement(CallStatement { operator, parameters }) => parameters + .as_ref() + .and_then(|it| it.as_ref().get_flat_reference_name()) + .and_then(|flat_ref| { + let op = operator.as_ref().get_flat_reference_name()?; + needs_qualifier(flat_ref).map_or_else(Option::Some, |q| { + q.then(|| { + create_call_statement( + op, + flat_ref, + Some("self"), + self.ctxt.id_provider.clone(), + &initializer.location, + ) + }) + }) + }), + _ => return, + }; + + self.unresolved_initializers.insert_initializer( + scope, + Some(&variable.name), + &updated_initializer.or(Some(initializer.clone())), + ); + } + } + + fn add_init_statements(&mut self, implementation: &mut plc_ast::ast::Implementation) { + let predicate = |var: &VariableIndexEntry| { + var.is_temp() + || var.is_var_external() + || (matches!(implementation.pou_type, PouType::Function | PouType::Method { .. }) + && var.is_local()) + }; + let strip_temporaries = |inits: &mut InitAssignments| { + let mut temps = InitAssignments::default(); + let ids = inits + .iter() + .filter(|(id, _)| self.index.find_member(&implementation.name, id).is_some_and(predicate)) + .map(|(id, _)| id.to_owned()) + .collect::>(); + + for id in ids { + if let Some(init) = inits.swap_remove(&id) { + temps.insert(id.to_owned(), init); + }; + } + + temps + }; + + // remove all initializers for the current implementation/pou + // XXX: this changes the order of init-statements in init-pous. but since assignments should still be ordered before call-statements, + // this should be fine => edge cases? + let Some(mut inits) = self.unresolved_initializers.swap_remove(&implementation.name) else { + return; + }; + + // remove all non-stateful variable entries + let temps = strip_temporaries(&mut inits); + // re-enter the remaining initializers + self.unresolved_initializers.insert(implementation.name.to_owned(), inits); + + // collect simple assignments + let assignments = temps.into_iter().filter_map(|(lhs, init)| { + init.as_ref().map(|it| { + let lhs_ty = self + .index + .find_member(&implementation.name, &lhs) + .map(|it| { + self.index + .get_effective_type_or_void_by_name(it.get_type_name()) + .get_type_information() + }) + .unwrap(); + if lhs_ty.is_reference_to() || lhs_ty.is_alias() { + // XXX: ignore REF_TO for temp variables since they can be generated regularly + let rhs = if let AstStatement::CallStatement(CallStatement { + parameters: Some(parameter), + .. + }) = it.get_stmt() + { + parameter + } else { + it + }; + // `REFERENCE TO` assignments in a POU body are automatically dereferenced and require the `REF=` operator to assign a pointer instead. + create_ref_assignment(&lhs, None, rhs, self.ctxt.get_id_provider()) + } else { + create_assignment(&lhs, None, it, self.ctxt.get_id_provider()) + } + }) + }); + + // collect necessary call statements to init-functions and user-defined init-functions + let mut implicit_calls = Vec::new(); + let mut user_init_calls = Vec::new(); + self.index.get_pou_members(&implementation.name).iter().filter(|var| predicate(var)).for_each( + |var| { + let dti = + self.index.get_effective_type_or_void_by_name(var.get_type_name()).get_type_information(); + if dti.is_struct() { + implicit_calls.push(create_call_statement( + &get_init_fn_name(dti.get_name()), + var.get_name(), + None, + self.ctxt.get_id_provider(), + &implementation.name_location, + )); + } + if self.user_inits.contains_key(dti.get_name()) { + user_init_calls.push(create_call_statement( + &get_user_init_fn_name(dti.get_name()), + var.get_name(), + None, + self.ctxt.get_id_provider(), + &implementation.name_location, + )); + } + }, + ); + + let stmts = assignments + .chain(implicit_calls) + .chain(user_init_calls) + .chain(std::mem::take(&mut implementation.statements)) + .collect::>(); + implementation.statements = stmts; + } + + /// Updates the scope and initialized variable for struct types. Adds entries for each encountered struct + /// (this includes POU-structs, i.e. programs, ...) to the initializer map if no entry is present + fn update_struct_initializers(&mut self, user_type: &mut plc_ast::ast::UserTypeDeclaration) { + let effective_type = + user_type.data_type.get_name().and_then(|it| self.index.find_effective_type_by_name(it)); + if let DataType::StructType { ref mut variables, .. } = &mut user_type.data_type { + let Some(ty) = effective_type else { + return user_type.walk(self); + }; + let name = ty.get_name(); + + for variable in variables { + self.unresolved_initializers.maybe_insert_initializer( + name, + Some(&variable.name), + &variable.initializer, + ); + + // XXX: Very duct-tapey but essentially we now have two initializers, one in the struct datatype + // definition itself (`DataType::StructType { initializer: Some(), ... }`) and one in the + // `__init_*` function now. The former is unresolvable because it has the raw initializer, e.g. + // `foo := (a := (b := (c := REF(...))))` whereas the latter is resolvable because it yields something + // like `foo.a.b.c := REF(...)`. Thus we remove the initializer from the struct datatype definition + // as the codegen would otherwise fail at generating them and result in a `Cannot generate values for..` + // Literals and references are ignored however, since they are resolvable and / or constant. + if variable.initializer.as_ref().is_some_and(|opt| !opt.is_literal() && !opt.is_reference()) { + variable.initializer = None; + } + } + + // add container to keys if not already present + self.unresolved_initializers.maybe_insert_initializer(name, None, &user_type.initializer); + } + } + + fn maybe_add_global_instance_initializer(&mut self, variable: &plc_ast::ast::Variable) { + let Some(global) = self.index.find_global_variable(variable.get_name()) else { + return; + }; + + let info = + self.index.get_effective_type_or_void_by_name(global.get_type_name()).get_type_information(); + + if !info.is_struct() { + return; + } + + self.unresolved_initializers.maybe_insert_initializer(GLOBAL_SCOPE, Some(variable.get_name()), &None); + } + + fn collect_var_config_assignments(&mut self, var_config: &[ConfigVariable]) { + let assignments = var_config.iter().map(|var| { + AstFactory::create_assignment(var.reference.clone(), var.address.clone(), self.ctxt.next_id()) + }); + self.var_config_initializers.extend(assignments); + } +} + +impl AstVisitorMut for InitVisitor { + fn visit_compilation_unit(&mut self, unit: &mut CompilationUnit) { + self.collect_var_config_assignments(&unit.var_config); + unit.walk(self) + } + + fn visit_implementation(&mut self, implementation: &mut plc_ast::ast::Implementation) { + self.add_init_statements(implementation); + implementation.walk(self); + } + + fn visit_variable(&mut self, variable: &mut plc_ast::ast::Variable) { + self.maybe_add_global_instance_initializer(variable); + self.update_initializer(variable); + variable.walk(self); + } + + fn visit_user_type_declaration(&mut self, user_type: &mut plc_ast::ast::UserTypeDeclaration) { + if !matches!(user_type.linkage, LinkageType::BuiltIn) { + self.update_struct_initializers(user_type); + user_type.walk(self); + } + } + + fn visit_data_type(&mut self, data_type: &mut DataType) { + if matches!(data_type, plc_ast::ast::DataType::StructType { .. }) { + self.walk_with_scope(data_type, data_type.get_name().map(ToOwned::to_owned)) + } else { + data_type.walk(self) + } + } + + fn visit_pou(&mut self, pou: &mut plc_ast::ast::Pou) { + if !matches!(pou.linkage, LinkageType::BuiltIn) { + self.unresolved_initializers.maybe_insert_initializer(&pou.name, None, &None); + } + + self.walk_with_scope(pou, Some(&pou.name.to_owned())); + } +} diff --git a/src/lowering/initializers.rs b/src/lowering/initializers.rs index 4ae7338b6e3..5df2bfb8e46 100644 --- a/src/lowering/initializers.rs +++ b/src/lowering/initializers.rs @@ -1,6 +1,7 @@ use crate::{ - index::{const_expressions::UnresolvableKind, get_init_fn_name, FxIndexMap, FxIndexSet}, - lowering::{create_call_statement, create_member_reference}, + index::{const_expressions::UnresolvableKind, get_init_fn_name, FxIndexMap, FxIndexSet, Index}, + lowering::helper::{create_assignments_from_initializer, create_call_statement, create_member_reference}, + lowering::init_visitor::InitVisitor, resolver::const_evaluator::UnresolvableConstant, }; use plc_ast::{ @@ -12,7 +13,6 @@ use plc_ast::{ }; use plc_source::source_location::{FileMarker, SourceLocation}; -use super::{create_assignments_from_initializer, InitVisitor}; pub(crate) const GLOBAL_SCOPE: &str = "__global"; const INIT_COMPILATION_UNIT: &str = "__initializers"; const VAR_CONFIG_INIT: &str = "__init___var_config"; @@ -28,7 +28,7 @@ pub(crate) trait Init<'lwr> where Self: Sized + Default, { - fn new(candidates: &'lwr [UnresolvableConstant]) -> Self; + fn new(candidates: &'lwr [UnresolvableConstant], index: &Index) -> Self; /// Inserts an initializer only if no entry exists for the given variable fn maybe_insert_initializer( &mut self, @@ -46,7 +46,7 @@ where } impl<'lwr> Init<'lwr> for Initializers { - fn new(candidates: &'lwr [UnresolvableConstant]) -> Self { + fn new(candidates: &'lwr [UnresolvableConstant], index: &Index) -> Self { let mut assignments = Self::default(); candidates .iter() @@ -58,6 +58,9 @@ impl<'lwr> Init<'lwr> for Initializers { None } }) + .filter(|(scope, _)| { + index.find_type(scope).is_some_and(|it| !matches!(it.linkage, LinkageType::BuiltIn)) + }) .for_each(|(scope, data)| { assignments.maybe_insert_initializer( &scope, @@ -127,15 +130,17 @@ impl InitVisitor { fn create_var_config_init(statements: Vec, mut id_provider: IdProvider) -> CompilationUnit { let loc = SourceLocation::internal_in_unit(Some(INIT_COMPILATION_UNIT)); - let pou = new_pou(VAR_CONFIG_INIT, id_provider.next_id(), vec![], PouType::Init, LinkageType::Internal, &loc); // this can probably just be internal - let implementation = new_implementation(VAR_CONFIG_INIT, statements, PouType::Init, LinkageType::Internal, loc); + let pou = + new_pou(VAR_CONFIG_INIT, id_provider.next_id(), vec![], PouType::Init, LinkageType::Internal, &loc); // this can probably just be internal + let implementation = + new_implementation(VAR_CONFIG_INIT, statements, PouType::Init, LinkageType::Internal, loc); new_unit(pou, implementation, INIT_COMPILATION_UNIT) } fn create_init_units(lowerer: &InitVisitor) -> Vec { let lookup = lowerer.unresolved_initializers.keys().map(|it| it.as_str()).collect::>(); lowerer - .unresolved_initializers + .unresolved_initializers .iter() .filter_map(|(container, init)| { // globals will be initialized in the `__init` body @@ -162,7 +167,10 @@ fn create_init_unit( .index .find_pou(container_name) .map(|it| (it.is_function() || it.is_method(), it.get_location(), *it.get_linkage())) - .unwrap_or_else(|| (false, &lowerer.index.get_type_or_panic(container_name).location, LinkageType::Internal)); + .unwrap_or_else(|| { + let datatype = lowerer.index.get_type_or_panic(container_name); + (false, &datatype.location, datatype.linkage) + }); if is_stateless { // functions do not get their own init-functions - @@ -188,7 +196,8 @@ fn create_init_unit( "self".to_string(), ); - let init_pou = new_pou(&init_fn_name, id_provider.next_id(), self_param, PouType::Init, linkage, &location); + let init_pou = + new_pou(&init_fn_name, id_provider.next_id(), self_param, PouType::Init, linkage, &location); let mut statements = Vec::new(); @@ -261,8 +270,12 @@ fn create_user_init_units(lowerer: &InitVisitor) -> Vec { location: location.clone(), }])]; - - let linkage = lowerer.index.find_pou(container_name).map(|it|*it.get_linkage()).unwrap_or(LinkageType::Internal); + let linkage = lowerer + .index + .find_pou(container_name) + .map(|it| *it.get_linkage()) + .or_else(|| lowerer.index.find_type(container_name).map(|it| it.linkage)) + .unwrap_or(LinkageType::Internal); let fn_name = get_user_init_fn_name(container_name); let init_pou = new_pou(&fn_name, id_provider.next_id(), param, PouType::Init, linkage, &location); @@ -328,7 +341,7 @@ fn create_init_wrapper_function( let global_instances = if let Some(global_instances) = lowerer.unresolved_initializers.get(GLOBAL_SCOPE).map(|it| { it.keys().filter_map(|var_name| { - lowerer.index.find_variable(None, &[var_name]).and_then(|it| { + lowerer.index.find_variable(None, &[var_name]).filter(|it| !it.is_external()).and_then(|it| { lowerer.index.find_effective_type_by_name(it.get_type_name()).and_then(|dt| { let name = dt.get_type_information().get_name(); if dt.get_type_information().is_struct() { @@ -389,8 +402,13 @@ fn create_init_wrapper_function( let user_init_calls = get_global_user_init_statements(lowerer); let statements = [calls, statements, user_init_calls].concat(); - let implementation = - new_implementation(init_symbol_name, statements, PouType::ProjectInit, LinkageType::Internal, SourceLocation::internal()); + let implementation = new_implementation( + init_symbol_name, + statements, + PouType::ProjectInit, + LinkageType::Internal, + SourceLocation::internal(), + ); let mut global_init = new_unit(init_pou, implementation, init_symbol_name); if skip_var_config { @@ -465,7 +483,7 @@ fn new_pou( name_location: location.to_owned(), poly_mode: None, generics: vec![], - linkage: LinkageType::Internal, + linkage, super_class: None, interfaces: vec![], properties: vec![], @@ -483,7 +501,7 @@ fn new_implementation( Implementation { name: name.into(), type_name: name.into(), - linkage: LinkageType::Internal, + linkage, pou_type, statements, location: location.clone(), @@ -560,13 +578,9 @@ fn create_vtable_initializer(lowerer: &InitVisitor, ids: &mut IdProvider, pou_na #[cfg(test)] mod tests { - use inkwell::module::Linkage; - use insta::assert_debug_snapshot; use plc_ast::ast::LinkageType; use test_utils::parse_and_validate_buffered_ast; - use crate::lowering::vtable; - #[test] fn usertype_todo_better_name_00() { let src = r#" @@ -1674,23 +1688,33 @@ mod tests { let init_base = init_unit.implementations.iter().find(|it| it.name == "__init_fb_base").unwrap(); assert_eq!(init_base.linkage, LinkageType::Internal); // Check that a vtable_init for base was generated - let vtable_init_base = init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_base").unwrap(); + let vtable_init_base = + init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_base").unwrap(); assert_eq!(vtable_init_base.linkage, LinkageType::Internal); // Make sure the variable block containing the base vtable is internal - let variable_block = units[0].global_vars.iter().find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Base_instance")).unwrap(); + let variable_block = units[0] + .global_vars + .iter() + .find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Base_instance")) + .unwrap(); assert_eq!(variable_block.linkage, LinkageType::Internal); // Make sure the derived initializer is still internal - let init_derived = init_unit.implementations.iter().find(|it| it.name == "__init_fb_derived").unwrap(); + let init_derived = + init_unit.implementations.iter().find(|it| it.name == "__init_fb_derived").unwrap(); assert_eq!(init_derived.linkage, LinkageType::Internal); // Make sure the derived vtable initializer is still internal - let vtable_init_derived = init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_derived").unwrap(); + let vtable_init_derived = + init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_derived").unwrap(); assert_eq!(vtable_init_derived.linkage, LinkageType::Internal); // Make sure the variable block containing the derived vtable is internal - let variable_block = units[0].global_vars.iter().find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Derived_instance")).unwrap(); + let variable_block = units[0] + .global_vars + .iter() + .find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Derived_instance")) + .unwrap(); assert_eq!(variable_block.linkage, LinkageType::Internal); } - #[test] fn function_block_initializer_with_external_base_call() { let src = r#" @@ -1717,21 +1741,30 @@ mod tests { let init_base = init_unit.implementations.iter().find(|it| it.name == "__init_fb_base").unwrap(); assert_eq!(init_base.linkage, LinkageType::External); // Check that a vtable_init for base was generated - let vtable_init_base = init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_base").unwrap(); + let vtable_init_base = + init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_base").unwrap(); assert_eq!(vtable_init_base.linkage, LinkageType::External); // Make sure the variable block containing the base vtable is internal - let variable_block = units[0].global_vars.iter().find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Base_instance")).unwrap(); + let variable_block = units[0] + .global_vars + .iter() + .find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Base_instance")) + .unwrap(); assert_eq!(variable_block.linkage, LinkageType::External); // Make sure the derived initializer is still internal - let init_derived = init_unit.implementations.iter().find(|it| it.name == "__init_fb_derived").unwrap(); + let init_derived = + init_unit.implementations.iter().find(|it| it.name == "__init_fb_derived").unwrap(); assert_eq!(init_derived.linkage, LinkageType::Internal); // Make sure the derived vtable initializer is still internal - let vtable_init_derived = init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_derived").unwrap(); + let vtable_init_derived = + init_unit.implementations.iter().find(|it| it.name == "__init___vtable_fb_derived").unwrap(); assert_eq!(vtable_init_derived.linkage, LinkageType::Internal); // Make sure the variable block containing the derived vtable is internal - let variable_block = units[0].global_vars.iter().find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Derived_instance")).unwrap(); + let variable_block = units[0] + .global_vars + .iter() + .find(|it| it.variables.iter().any(|it| it.name == "__vtable_FB_Derived_instance")) + .unwrap(); assert_eq!(variable_block.linkage, LinkageType::Internal); } - - } diff --git a/src/lowering/vtable.rs b/src/lowering/vtable.rs index 4b53ab91e69..da180695bc9 100644 --- a/src/lowering/vtable.rs +++ b/src/lowering/vtable.rs @@ -212,6 +212,7 @@ impl VirtualTableGenerator { initializer: None, location: location.clone(), scope: None, + linkage: pou.linkage, } } diff --git a/src/parser.rs b/src/parser.rs index 70d9d930d81..cfa7d00626c 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -869,6 +869,7 @@ fn parse_type(lexer: &mut ParseSession) -> Vec { initializer, location: name_location, scope: lexer.scope.clone(), + linkage: LinkageType::Internal, }); } } diff --git a/src/parser/tests/parse_errors/parse_error_statements_tests.rs b/src/parser/tests/parse_errors/parse_error_statements_tests.rs index 658370a9a36..cf58691b9d9 100644 --- a/src/parser/tests/parse_errors/parse_error_statements_tests.rs +++ b/src/parser/tests/parse_errors/parse_error_statements_tests.rs @@ -1135,6 +1135,7 @@ fn pointer_type_without_to_test() { location: SourceLocation::internal(), initializer: None, scope: None, + linkage: LinkageType::Internal, }; assert_eq!(format!("{expected:#?}"), format!("{pointer_type:#?}").as_str()); @@ -1164,6 +1165,7 @@ fn pointer_type_with_wrong_keyword_to_test() { location: SourceLocation::internal(), initializer: None, scope: None, + linkage: LinkageType::Internal, }; assert_eq!(format!("{expected:#?}"), format!("{pointer_type:#?}").as_str()); assert_snapshot!(diagnostics); diff --git a/src/parser/tests/type_parser_tests.rs b/src/parser/tests/type_parser_tests.rs index f0f881ab734..49bc5093996 100644 --- a/src/parser/tests/type_parser_tests.rs +++ b/src/parser/tests/type_parser_tests.rs @@ -78,6 +78,7 @@ fn simple_struct_type_can_be_parsed() { initializer: None, location: SourceLocation::internal(), scope: None, + linkage: plc_ast::ast::LinkageType::Internal, } ); assert_eq!(ast_string, expected_ast); @@ -163,6 +164,7 @@ fn type_alias_can_be_parsed() { initializer: None, location: SourceLocation::internal(), scope: None, + linkage: plc_ast::ast::LinkageType::Internal, } ); diff --git a/src/resolver.rs b/src/resolver.rs index 6607da60867..d8c55bbedaa 100644 --- a/src/resolver.rs +++ b/src/resolver.rs @@ -1794,6 +1794,7 @@ impl<'i> TypeAnnotator<'i> { information, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; self.annotation_map.new_index.register_type(dt); } @@ -2479,6 +2480,7 @@ fn register_string_type(index: &mut Index, is_wide: bool, len: usize) -> String size: typesystem::TypeSize::LiteralInteger(len as i64 + 1), }, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }); } new_type_name @@ -2501,6 +2503,7 @@ pub(crate) fn add_pointer_type(index: &mut Index, inner_type_name: String, type_ is_function: false, }, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }); } new_type_name diff --git a/src/resolver/const_evaluator.rs b/src/resolver/const_evaluator.rs index f1856a714b3..28ccf972123 100644 --- a/src/resolver/const_evaluator.rs +++ b/src/resolver/const_evaluator.rs @@ -142,9 +142,9 @@ pub fn evaluate_constants(mut index: Index) -> (Index, Vec // there was an error during evaluation (Err(kind), _) => { //error during resolving - dbg!(index.get_mut_const_expressions().find_const_expression(&candidate)); + index.get_mut_const_expressions().find_const_expression(&candidate); unresolvable.push( - dbg!(UnresolvableConstant::new(candidate, kind.get_reason()).with_kind(kind.clone())), + UnresolvableConstant::new(candidate, kind.get_reason()).with_kind(kind.clone()), ); index .get_mut_const_expressions() diff --git a/src/resolver/generics.rs b/src/resolver/generics.rs index d42d73e57ad..cc7d92f11c1 100644 --- a/src/resolver/generics.rs +++ b/src/resolver/generics.rs @@ -204,6 +204,7 @@ impl TypeAnnotator<'_> { initial_value: old_dataype.initial_value.to_owned(), location: old_dataype.location.to_owned(), nature: old_dataype.nature.to_owned(), + linkage: old_dataype.linkage, }; self.annotation_map.new_index.register_pou_type(new_datatype); @@ -251,6 +252,7 @@ impl TypeAnnotator<'_> { name: name.clone(), nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: LinkageType::Internal, }); name diff --git a/src/resolver/tests/fnptr.rs b/src/resolver/tests/fnptr.rs index db2ae7feb51..94f5a488b35 100644 --- a/src/resolver/tests/fnptr.rs +++ b/src/resolver/tests/fnptr.rs @@ -535,6 +535,7 @@ fn function_pointer_arguments_have_correct_type_hint() { location: SourceLocation { span: None, }, + linkage: Internal, }, ) "#); diff --git a/src/resolver/tests/resolve_literals_tests.rs b/src/resolver/tests/resolve_literals_tests.rs index a8c68aea839..3fd9f7ee93b 100644 --- a/src/resolver/tests/resolve_literals_tests.rs +++ b/src/resolver/tests/resolve_literals_tests.rs @@ -62,7 +62,8 @@ fn string_literals_are_annotated() { encoding: crate::typesystem::StringEncoding::Utf8, size: crate::typesystem::TypeSize::LiteralInteger(4) }, - location: SourceLocation::internal() + location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, } ); assert_eq!( @@ -75,7 +76,8 @@ fn string_literals_are_annotated() { encoding: crate::typesystem::StringEncoding::Utf16, size: crate::typesystem::TypeSize::LiteralInteger(7) }, - location: SourceLocation::internal() + location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, } ); } diff --git a/src/tests/adr/initializer_functions_adr.rs b/src/tests/adr/initializer_functions_adr.rs index 2f02bfa7e09..aae14ca83af 100644 --- a/src/tests/adr/initializer_functions_adr.rs +++ b/src/tests/adr/initializer_functions_adr.rs @@ -1394,20 +1394,15 @@ fn external_initializers() { target datalayout = "[filtered]" target triple = "[filtered]" - %__vtable_foo = type { void (%foo*)* } %foo = type { i32*, i32 } + %__vtable_foo = type { void (%foo*)* } - @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] - @____vtable_foo__init = external unnamed_addr constant %__vtable_foo @__foo__init = external unnamed_addr constant %foo + @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__vtable_foo_instance = external global %__vtable_foo + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] declare void @foo(%foo*) - declare void @__init_foo(%foo*) - declare void @__init___vtable_foo(%__vtable_foo*) - declare void @__user_init___vtable_foo(%__vtable_foo*) - declare void @__user_init_foo(%foo*) - define i32 @main() { entry: @@ -1423,6 +1418,10 @@ fn external_initializers() { ret i32 %main_ret } + declare void @__init_foo(%foo*) + + declare void @__user_init_foo(%foo*) + ; Function Attrs: argmemonly nofree nounwind willreturn declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #0 @@ -1435,6 +1434,119 @@ fn external_initializers() { "#); } +/// +/// Initializers for external members happens in the external libraries +/// The current module defines such external initializers as declarations only +/// This also applies to any vtable initializers for external FBs +#[test] +fn external_initializers_in_fbs() { + let src = r" + {external} FUNCTION_BLOCK foo + VAR + x : DINT := 5; + END_VAR + END_FUNCTION_BLOCK + + FUNCTION_BLOCK main + VAR + fb: foo; + END_VAR + fb(); + END_FUNCTION_BLOCK + + VAR_GLOBAL + main_inst : main; + END_VAR + "; + + let res = generate_to_string("Test", vec![SourceCode::from(src)]).unwrap(); + filtered_assert_snapshot!(res, @r#" + ; ModuleID = '' + source_filename = "" + target datalayout = "[filtered]" + target triple = "[filtered]" + + %__vtable_foo = type { void (%foo*)* } + %foo = type { i32*, i32 } + %main = type { i32*, %foo } + %__vtable_main = type { void (%main*)* } + + @__vtable_foo_instance = external global %__vtable_foo + @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] + @__main__init = unnamed_addr constant %main { i32* null, %foo { i32* null, i32 5 } } + @__foo__init = external unnamed_addr constant %foo + @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer + @____vtable_main__init = unnamed_addr constant %__vtable_main zeroinitializer + @main_inst = global %main { i32* null, %foo { i32* null, i32 5 } } + @__vtable_main_instance = global %__vtable_main zeroinitializer + + define void @main(%main* %0) { + entry: + %this = alloca %main*, align 8 + store %main* %0, %main** %this, align 8 + %__vtable = getelementptr inbounds %main, %main* %0, i32 0, i32 0 + %fb = getelementptr inbounds %main, %main* %0, i32 0, i32 1 + call void @foo(%foo* %fb) + ret void + } + + declare void @foo(%foo*) + + define void @__init___vtable_main(%__vtable_main* %0) { + entry: + %self = alloca %__vtable_main*, align 8 + store %__vtable_main* %0, %__vtable_main** %self, align 8 + %deref = load %__vtable_main*, %__vtable_main** %self, align 8 + %__body = getelementptr inbounds %__vtable_main, %__vtable_main* %deref, i32 0, i32 0 + store void (%main*)* @main, void (%main*)** %__body, align 8 + ret void + } + + define void @__init_main(%main* %0) { + entry: + %self = alloca %main*, align 8 + store %main* %0, %main** %self, align 8 + %deref = load %main*, %main** %self, align 8 + %fb = getelementptr inbounds %main, %main* %deref, i32 0, i32 1 + call void @__init_foo(%foo* %fb) + %deref1 = load %main*, %main** %self, align 8 + %__vtable = getelementptr inbounds %main, %main* %deref1, i32 0, i32 0 + store i32* bitcast (%__vtable_main* @__vtable_main_instance to i32*), i32** %__vtable, align 8 + ret void + } + + declare void @__init_foo(%foo*) + + define void @__user_init_main(%main* %0) { + entry: + %self = alloca %main*, align 8 + store %main* %0, %main** %self, align 8 + %deref = load %main*, %main** %self, align 8 + %fb = getelementptr inbounds %main, %main* %deref, i32 0, i32 1 + call void @__user_init_foo(%foo* %fb) + ret void + } + + declare void @__user_init_foo(%foo*) + + define void @__user_init___vtable_main(%__vtable_main* %0) { + entry: + %self = alloca %__vtable_main*, align 8 + store %__vtable_main* %0, %__vtable_main** %self, align 8 + ret void + } + + define void @__init___Test() { + entry: + call void @__init_main(%main* @main_inst) + call void @__init___vtable_main(%__vtable_main* @__vtable_main_instance) + call void @__user_init_main(%main* @main_inst) + call void @__user_init___vtable_main(%__vtable_main* @__vtable_main_instance) + ret void + } + "#); +} + /// In inheritance scenarios, initializers for external parents happens in the external libraries /// The local constructors only need to call the external initializers as declarations #[test] @@ -1467,18 +1579,18 @@ fn external_inherited_initializers() { target datalayout = "[filtered]" target triple = "[filtered]" + %__vtable_foo = type { void (%foo*)* } + %foo = type { i32*, i32 } %__vtable_bar = type { void (%bar*)* } %bar = type { %foo, i32 } - %foo = type { i32*, i32 } - %__vtable_foo = type { void (%foo*)* } + @__vtable_foo_instance = external global %__vtable_foo @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] @____vtable_bar__init = unnamed_addr constant %__vtable_bar zeroinitializer @__bar__init = unnamed_addr constant %bar { %foo { i32* null, i32 5 }, i32 10 } @__foo__init = external unnamed_addr constant %foo - @____vtable_foo__init = external unnamed_addr constant %__vtable_foo + @____vtable_foo__init = unnamed_addr constant %__vtable_foo zeroinitializer @__vtable_bar_instance = global %__vtable_bar zeroinitializer - @__vtable_foo_instance = external global %__vtable_foo define void @bar(%bar* %0) { entry: @@ -1490,10 +1602,6 @@ fn external_inherited_initializers() { } declare void @foo(%foo*) - declare void @__init_foo(%foo*) - declare void @__init___vtable_foo(%__vtable_foo*) - declare void @__user_init___vtable_foo(%__vtable_foo*) - declare void @__user_init_foo(%foo*) define i32 @main() { entry: @@ -1528,17 +1636,15 @@ fn external_inherited_initializers() { store %bar* %0, %bar** %self, align 8 %deref = load %bar*, %bar** %self, align 8 %__foo = getelementptr inbounds %bar, %bar* %deref, i32 0, i32 0 - %__vtable = getelementptr inbounds %foo, %foo* %__foo, i32 0, i32 0 + call void @__init_foo(%foo* %__foo) + %deref1 = load %bar*, %bar** %self, align 8 + %__foo2 = getelementptr inbounds %bar, %bar* %deref1, i32 0, i32 0 + %__vtable = getelementptr inbounds %foo, %foo* %__foo2, i32 0, i32 0 store i32* bitcast (%__vtable_bar* @__vtable_bar_instance to i32*), i32** %__vtable, align 8 ret void } - define void @__user_init___vtable_bar(%__vtable_bar* %0) { - entry: - %self = alloca %__vtable_bar*, align 8 - store %__vtable_bar* %0, %__vtable_bar** %self, align 8 - ret void - } + declare void @__init_foo(%foo*) define void @__user_init_bar(%bar* %0) { entry: @@ -1550,6 +1656,15 @@ fn external_inherited_initializers() { ret void } + declare void @__user_init_foo(%foo*) + + define void @__user_init___vtable_bar(%__vtable_bar* %0) { + entry: + %self = alloca %__vtable_bar*, align 8 + store %__vtable_bar* %0, %__vtable_bar** %self, align 8 + ret void + } + define void @__init___Test() { entry: call void @__init___vtable_bar(%__vtable_bar* @__vtable_bar_instance) @@ -1588,18 +1703,14 @@ fn external_struct_and_program_initializers() { target datalayout = "[filtered]" target triple = "[filtered]" - %myStruct = type { i32 } %baz = type { %myStruct } + %myStruct = type { i32 } - @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer - @baz_instance = external global %baz @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @__init___Test, i8* null }] + @baz_instance = external global %baz + @__myStruct__init = unnamed_addr constant %myStruct zeroinitializer declare void @baz(%baz*) - declare void @__init_mystruct(%myStruct*) - declare void @__init_baz(%baz*) - declare void @__user_init_baz(%baz*) - declare void @__user_init_myStruct(%myStruct*) define i32 @main() { entry: @@ -1610,9 +1721,29 @@ fn external_struct_and_program_initializers() { ret i32 %main_ret } + define void @__init_mystruct(%myStruct* %0) { + entry: + %self = alloca %myStruct*, align 8 + store %myStruct* %0, %myStruct** %self, align 8 + ret void + } + + define void @__user_init_myStruct(%myStruct* %0) { + entry: + %self = alloca %myStruct*, align 8 + store %myStruct* %0, %myStruct** %self, align 8 + ret void + } + define void @__init___Test() { entry: + call void @__init_baz(%baz* @baz_instance) + call void @__user_init_baz(%baz* @baz_instance) ret void } + + declare void @__init_baz(%baz*) + + declare void @__user_init_baz(%baz*) "#); } diff --git a/src/typesystem.rs b/src/typesystem.rs index da7e6487f68..d8eb94d5757 100644 --- a/src/typesystem.rs +++ b/src/typesystem.rs @@ -7,7 +7,7 @@ use std::{ use anyhow::{anyhow, Result}; use plc_ast::{ - ast::{AstNode, AutoDerefType, Operator, PouType, TypeNature}, + ast::{AstNode, AutoDerefType, LinkageType, Operator, PouType, TypeNature}, literals::{AstLiteral, StringValue}, }; use plc_source::source_location::SourceLocation; @@ -103,6 +103,7 @@ pub struct DataType { pub information: DataTypeInformation, pub nature: TypeNature, pub location: SourceLocation, + pub linkage: LinkageType, } impl Hash for DataType { @@ -901,6 +902,7 @@ pub fn get_builtin_types() -> Vec { information: DataTypeInformation::Void, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: "__VLA".into(), @@ -912,6 +914,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::__VLA, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: U1_TYPE.into(), @@ -924,6 +927,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: BOOL_TYPE.into(), @@ -936,6 +940,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Bit, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: BYTE_TYPE.into(), @@ -948,6 +953,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Bit, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: SINT_TYPE.into(), @@ -960,6 +966,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Signed, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: USINT_TYPE.into(), @@ -972,6 +979,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Unsigned, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: WORD_TYPE.into(), @@ -984,6 +992,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Bit, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: INT_TYPE.into(), @@ -996,6 +1005,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Signed, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: UINT_TYPE.into(), @@ -1008,6 +1018,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Unsigned, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: DWORD_TYPE.into(), @@ -1020,6 +1031,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Bit, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: DINT_TYPE.into(), @@ -1032,6 +1044,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Signed, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: UDINT_TYPE.into(), @@ -1044,6 +1057,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Unsigned, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: LWORD_TYPE.into(), @@ -1056,6 +1070,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Bit, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: LINT_TYPE.into(), @@ -1068,6 +1083,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Signed, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: DATE_TYPE.into(), @@ -1080,6 +1096,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: TIME_TYPE.into(), @@ -1092,6 +1109,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Duration, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: DATE_AND_TIME_TYPE.into(), @@ -1104,6 +1122,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: TIME_OF_DAY_TYPE.into(), @@ -1116,6 +1135,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: ULINT_TYPE.into(), @@ -1128,6 +1148,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Unsigned, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: REAL_TYPE.into(), @@ -1135,6 +1156,7 @@ pub fn get_builtin_types() -> Vec { information: DataTypeInformation::Float { name: REAL_TYPE.into(), size: REAL_SIZE }, nature: TypeNature::Real, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: LREAL_TYPE.into(), @@ -1142,6 +1164,7 @@ pub fn get_builtin_types() -> Vec { information: DataTypeInformation::Float { name: LREAL_TYPE.into(), size: LREAL_SIZE }, nature: TypeNature::Real, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: STRING_TYPE.into(), @@ -1152,6 +1175,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::String, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: WSTRING_TYPE.into(), @@ -1162,6 +1186,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::String, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: SHORT_DATE_AND_TIME_TYPE.into(), @@ -1172,6 +1197,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: LONG_DATE_AND_TIME_TYPE_SHORTENED.into(), @@ -1182,6 +1208,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: LONG_DATE_AND_TIME_TYPE.into(), @@ -1192,6 +1219,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: SHORT_DATE_TYPE.into(), @@ -1202,6 +1230,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: LONG_DATE_TYPE.into(), @@ -1212,6 +1241,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: LONG_DATE_TYPE_SHORTENED.into(), @@ -1222,6 +1252,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: SHORT_TIME_OF_DAY_TYPE.into(), @@ -1232,6 +1263,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: LONG_TIME_OF_DAY_TYPE.into(), @@ -1242,6 +1274,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: LONG_TIME_OF_DAY_TYPE_SHORTENED.into(), @@ -1252,6 +1285,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Date, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: SHORT_TIME_TYPE.into(), @@ -1262,6 +1296,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Duration, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: LONG_TIME_TYPE.into(), @@ -1272,6 +1307,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Duration, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: LONG_TIME_TYPE_SHORTENED.into(), @@ -1282,6 +1318,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Duration, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: CHAR_TYPE.into(), @@ -1294,6 +1331,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Char, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, DataType { name: WCHAR_TYPE.into(), @@ -1306,6 +1344,7 @@ pub fn get_builtin_types() -> Vec { }, nature: TypeNature::Char, location: SourceLocation::internal(), + linkage: LinkageType::BuiltIn, }, ] } diff --git a/src/typesystem/tests.rs b/src/typesystem/tests.rs index 37430b9fc5a..f973ac079d4 100644 --- a/src/typesystem/tests.rs +++ b/src/typesystem/tests.rs @@ -164,6 +164,7 @@ fn get_bigger_size_string_test() { nature: TypeNature::String, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; let string_30 = typesystem::DataType { name: "STRING_30".into(), @@ -174,6 +175,7 @@ fn get_bigger_size_string_test() { }, nature: TypeNature::String, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; //The string with the bigger length is the bigger string assert_eq!(&string_1024, typesystem::get_bigger_type(&string_1024, &string_30, &index)); @@ -200,6 +202,7 @@ fn get_bigger_size_array_test_returns_first() { }, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; let array_30 = typesystem::DataType { name: "ARRAY_30".into(), @@ -214,6 +217,7 @@ fn get_bigger_size_array_test_returns_first() { }, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; //The array with the most elements is bigger assert_eq!(&array_1024, typesystem::get_bigger_type(&array_1024, &array_30, &index)); @@ -236,6 +240,7 @@ fn get_bigger_size_mixed_test_no_() { }, nature: TypeNature::String, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; let wstring_1024 = typesystem::DataType { name: "WSTRING_1024".into(), @@ -246,6 +251,7 @@ fn get_bigger_size_mixed_test_no_() { }, nature: TypeNature::String, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; //Array of string let array_string_30 = typesystem::DataType { @@ -261,6 +267,7 @@ fn get_bigger_size_mixed_test_no_() { }, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; //Array of int let array_30 = typesystem::DataType { @@ -276,6 +283,7 @@ fn get_bigger_size_mixed_test_no_() { }, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; //2-dim array of int let array_30_30 = typesystem::DataType { @@ -297,6 +305,7 @@ fn get_bigger_size_mixed_test_no_() { }, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; //Given two incompatible types @@ -535,6 +544,7 @@ fn array_size_single_dim_tests() { }, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; //the size of the array is 20*size(int) assert_eq!(320, array_20.get_type_information().get_size_in_bits(&index).unwrap()); @@ -563,6 +573,7 @@ fn array_size_multi_dim_tests() { }, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; //the size of the array is 20*size(int) assert_eq!(6400, array_20_20.get_type_information().get_size_in_bits(&index).unwrap()); @@ -585,6 +596,7 @@ fn array_size_nested_tests() { }, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; index.register_type(array_20); let nested_array = typesystem::DataType { @@ -600,6 +612,7 @@ fn array_size_nested_tests() { }, nature: TypeNature::Any, location: SourceLocation::internal(), + linkage: plc_ast::ast::LinkageType::Internal, }; //the size of the array is 20*size(int) From 7ff69bfeed3fd9ce66e38f51cfd99241c180a875 Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Sun, 16 Nov 2025 17:44:23 +0100 Subject: [PATCH 13/18] add helper methods to create pipelines with custom particitants wip: lowered ast remove the lowered ast, stick to normal ast for now wip --- Cargo.lock | 1 + compiler/plc_ast/src/ast.rs | 16 + compiler/plc_driver/src/lib.rs | 69 ++-- compiler/plc_driver/src/pipelines.rs | 19 +- compiler/plc_driver/src/runner.rs | 2 +- compiler/plc_lowering/Cargo.toml | 3 +- compiler/plc_lowering/src/initializer.rs | 470 +++++++++++++++++++++-- tests/test_utils/src/lib.rs | 2 +- 8 files changed, 520 insertions(+), 62 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 020fe979a9c..6920dcfd2c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2962,6 +2962,7 @@ dependencies = [ "insta", "log", "plc_ast", + "plc_diagnostics", "plc_driver", "plc_source", "rusty", diff --git a/compiler/plc_ast/src/ast.rs b/compiler/plc_ast/src/ast.rs index f70e75ec6ac..91c4406861d 100644 --- a/compiler/plc_ast/src/ast.rs +++ b/compiler/plc_ast/src/ast.rs @@ -300,6 +300,14 @@ impl Pou { pub fn is_stateful(&self) -> bool { matches!(self.kind, PouType::Program | PouType::FunctionBlock | PouType::Action | PouType::Class) } + + pub fn is_external(&self) -> bool { + matches!(self.linkage, LinkageType::External) + } + + pub fn is_built_in(&self) -> bool { + matches!(self.linkage, LinkageType::BuiltIn) + } } #[derive(Debug, PartialEq)] @@ -543,6 +551,14 @@ impl VariableBlock { self.variables = variables; self } + + pub fn is_local(&self) -> bool { + matches!(self.kind, VariableBlockType::Local) + } + + pub fn is_temp(&self) -> bool { + matches!(self.kind, VariableBlockType::Temp) + } } impl Default for VariableBlock { diff --git a/compiler/plc_driver/src/lib.rs b/compiler/plc_driver/src/lib.rs index 1a84f9a1662..22c29f15206 100644 --- a/compiler/plc_driver/src/lib.rs +++ b/compiler/plc_driver/src/lib.rs @@ -156,7 +156,7 @@ pub fn compile_with_pipeline( mut pipeline: BuildPipeline, ) -> Result<()> { //register participants - pipeline.register_default_participants(); + pipeline.register_default_mut_participants(); let target = pipeline.compile_parameters.as_ref().and_then(|it| it.target.clone()).unwrap_or_default(); let codegen_participant = CodegenParticipant { compile_options: pipeline.get_compile_options().unwrap(), @@ -192,35 +192,56 @@ pub fn parse_and_annotate( name: &str, src: Vec, ) -> Result<(GlobalContext, AnnotatedProject), Diagnostic> { - let (pipeline, project) = parse_and_annotate_with_diagnostics(name, src, Diagnostician::buffered()) - .map_err(|it| Diagnostic::new(it.buffer().unwrap_or_default()))?; + let (pipeline, project) = parse_and_annotate_with_diagnostics(name, src, Diagnostician::buffered())?; Ok((pipeline.context, project)) } +impl BuildPipeline { + pub fn from_sources(name: &str, src: Vec, diagnostician: Diagnostician) -> Result { + // Parse the source to ast + let project = Project::new(name.to_string()).with_sources(src); + let Ok(context) = GlobalContext::new().with_source(project.get_sources(), None) else { + return Err(Diagnostic::new(diagnostician.buffer().unwrap_or_default())); + }; + let pipeline = BuildPipeline { + context, + project, + diagnostician, + compile_parameters: None, + linker: LinkerType::Internal, + mutable_participants: Vec::default(), + participants: Vec::default(), + module_name: Some("".to_string()), + }; + Ok(pipeline) + } + + /// Parses, indexes and annotates the project, returning any diagnostics found along the way + /// Used for tests where we don't want to run the full pipeline + pub fn parse_and_annotate(&mut self) -> Result { + let Ok(project) = self.parse() else { + return Err(Diagnostic::new(self.diagnostician.buffer().unwrap_or_default())); + }; + let Ok(project) = self.index(project) else { + return Err(Diagnostic::new(self.diagnostician.buffer().unwrap_or_default())); + }; + let Ok(project) = self.annotate(project) else { + return Err(Diagnostic::new(self.diagnostician.buffer().unwrap_or_default())); + }; + Ok(project) + } +} + pub fn parse_and_annotate_with_diagnostics( name: &str, src: Vec, diagnostician: Diagnostician, -) -> Result<(BuildPipeline, AnnotatedProject), Diagnostician> { +) -> Result<(BuildPipeline, AnnotatedProject), Diagnostic> { // Parse the source to ast - let project = Project::new(name.to_string()).with_sources(src); - let Ok(context) = GlobalContext::new().with_source(project.get_sources(), None) else { - return Err(diagnostician); - }; - let mut pipeline = BuildPipeline { - context, - project, - diagnostician, - compile_parameters: None, - linker: LinkerType::Internal, - mutable_participants: Vec::default(), - participants: Vec::default(), - module_name: Some("".to_string()), - }; - pipeline.register_default_participants(); - let Ok(project) = pipeline.parse() else { return Err(pipeline.diagnostician) }; - let Ok(project) = pipeline.index(project) else { return Err(pipeline.diagnostician) }; - let Ok(project) = pipeline.annotate(project) else { return Err(pipeline.diagnostician) }; + let mut pipeline = BuildPipeline::from_sources(name, src, diagnostician)?; + pipeline.register_default_mut_participants(); + let project = pipeline.parse_and_annotate()?; + let _ = project.validate(&pipeline.context, &mut pipeline.diagnostician); Ok((pipeline, project)) } @@ -230,7 +251,7 @@ pub fn parse_and_validate(name: &str, src: Vec) - let _ = project.validate(&pipeline.context, &mut pipeline.diagnostician); pipeline.diagnostician.buffer().unwrap() } - Err(diagnostician) => diagnostician.buffer().unwrap(), + Err(diagnostic) => diagnostic.to_string(), } } @@ -266,7 +287,7 @@ fn generate_to_string_internal( participants: Vec::default(), module_name: Some("".to_string()), }; - pipeline.register_default_participants(); + pipeline.register_default_mut_participants(); let project = pipeline.parse()?; let project = pipeline.index(project)?; let project = pipeline.annotate(project)?; diff --git a/compiler/plc_driver/src/pipelines.rs b/compiler/plc_driver/src/pipelines.rs index 541c54c3d04..c89c031df60 100644 --- a/compiler/plc_driver/src/pipelines.rs +++ b/compiler/plc_driver/src/pipelines.rs @@ -247,21 +247,28 @@ impl BuildPipeline { log::info!("{err}") } } - /// Register all default participants (excluding codegen/linking) - pub fn register_default_participants(&mut self) { + + pub fn get_default_mut_particitants(&self) -> Vec> { use participant::InitParticipant; - // XXX: should we use a static array of participants? - let mut_participants: Vec> = vec![ + vec![ Box::new(VirtualTableGenerator::new(self.context.provider())), Box::new(PolymorphicCallLowerer::new(self.context.provider())), Box::new(PropertyLowerer::new(self.context.provider())), Box::new(InitParticipant::new(self.project.get_init_symbol_name(), self.context.provider())), Box::new(AggregateTypeLowerer::new(self.context.provider())), Box::new(InheritanceLowerer::new(self.context.provider())), - ]; + ] + } + /// Register all default participants (excluding codegen/linking) + pub fn register_default_mut_participants(&mut self) { + // XXX: should we use a static array of participants? + let mut_participants = self.get_default_mut_particitants(); + self.register_mut_participants(mut_participants); + } - for participant in mut_participants { + pub fn register_mut_participants(&mut self, participants: Vec>) { + for participant in participants { self.register_mut_participant(participant) } } diff --git a/compiler/plc_driver/src/runner.rs b/compiler/plc_driver/src/runner.rs index 6b8eaf3e9ed..2759c4ff9d0 100644 --- a/compiler/plc_driver/src/runner.rs +++ b/compiler/plc_driver/src/runner.rs @@ -43,7 +43,7 @@ pub fn compile(codegen_context: &CodegenContext, source: T) -> Ge module_name: Some("".to_string()), }; - pipeline.register_default_participants(); + pipeline.register_default_mut_participants(); let project = pipeline.parse().unwrap(); let project = pipeline.index(project).unwrap(); diff --git a/compiler/plc_lowering/Cargo.toml b/compiler/plc_lowering/Cargo.toml index 1d534ecbf7c..0e937e925dc 100644 --- a/compiler/plc_lowering/Cargo.toml +++ b/compiler/plc_lowering/Cargo.toml @@ -7,8 +7,9 @@ edition = "2021" plc = { path = "../..", package = "rusty" } plc_ast = { path = "../plc_ast" } plc_source = { path = "../plc_source" } +plc_diagnostics = { path = "../plc_diagnostics" } log.workspace = true [dev-dependencies] plc_driver = { path = "../plc_driver" } -insta = "1.31.0" \ No newline at end of file +insta = "1.31.0" diff --git a/compiler/plc_lowering/src/initializer.rs b/compiler/plc_lowering/src/initializer.rs index 12e98dbcf44..9f5e32a83a1 100644 --- a/compiler/plc_lowering/src/initializer.rs +++ b/compiler/plc_lowering/src/initializer.rs @@ -5,14 +5,10 @@ //! to include initialization code, making sure that the resulting AST is ready for //! further compilation stages. //! Initialization logic is as follows: -//! - Every struct(and POU) has an optional implicit initializer for constant fields. -//! - The name for this initializer is `_init` -//! - The field is always private to the module -//! - Every struct(and POU) has a constructor for fields with pointer assignments or non-constant values +//! - Every struct(and POU) has a constructor for fields with constant or pointer initializers. //! - The name for this constructor is `_ctor` -//! - The constructor is always public and implicitly uses the implicit initializer -//! - Variables of the struct are initialized using the implicit initializer if their value is -//! derived at compile time, otherwise the constructor is used. +//! - The constructor is always public +//! - Variables of the struct are initialized by calling the constructor //! - Global variables are initialized in a global constructor function called `__global_ctor` //! - This function is called per module inside the static initialization code //! - The function is private to the module @@ -21,12 +17,23 @@ //! - External POUs and struct constructors are marked as `extern` and have no body. //! - External variables are not re-initialized in the global constructor, they are assumed to be //! initialized externally. -//! - Bulit-in types and variables are not re-initialized in the global +//! - Built-in types and variables are not re-initialized in the global //! constructor. -use plc::index::{FxIndexMap, Index}; -use plc_ast::{ast::AstNode, visitor::AstVisitor}; +use std::any::Any; +use plc::{ + index::{FxIndexMap, Index}, + lowering::helper::create_assignment, +}; +use plc_ast::{ + ast::{AstFactory, AstNode, CompilationUnit}, + mut_visitor::AstVisitorMut, + provider::IdProvider, + visitor::AstVisitor, +}; + +#[derive(Debug, PartialEq)] enum Body { Internal(Vec), External, @@ -34,55 +41,460 @@ enum Body { } pub struct Initializer<'idx> { + id_provider: IdProvider, index: &'idx Index, - implicit_initializers: FxIndexMap, + /// Stateful constructor per POU/struct constructors: FxIndexMap, + /// Constructors for temp and stack variables per POU + stack_constructor: FxIndexMap, + /// Global constructor statements global_constructor: Vec, } //TODO: might need to be a mutable ast visitor impl AstVisitor for Initializer<'_> { - fn visit_compilation_unit(&mut self, unit: &plc_ast::ast::CompilationUnit) { - // Read all structs and POU structs, collect their implicit initializers if available - unit.pous.iter().for_each(|pou| { - // find the pou index entry - if let Some(pie) = self.index.find_pou_type(&pou.name) { - pie.initial_value + fn visit_pou(&mut self, pou: &plc_ast::ast::Pou) { + match pou.linkage { + plc_ast::ast::LinkageType::External => { + self.constructors.insert(pou.name.clone(), Body::External); + return; + } + plc_ast::ast::LinkageType::BuiltIn => { + self.constructors.insert(pou.name.clone(), Body::None); + return; + } + _ => {} + }; + + let mut constructor = vec![]; + let mut stack_constructor = vec![]; + + // Collect variable initializers + for var in pou.variable_blocks.iter() { + for variable in var.variables.iter() { + if let Some(initializer) = &variable.initializer { + // Create an assignment "self. := " + let assignment = create_assignment( + variable.get_name(), + Some("self"), + initializer, + self.id_provider.clone(), + ); + if var.is_temp() || (var.is_local() && !pou.is_stateful()) { + stack_constructor.push(assignment); + } else { + constructor.push(assignment); + } + } } - }); - // Add a call to the constructor to memcpy the imlicit initializer - // For each of the call statement or reference in the pou initializer, add an assignment to - // the constructor + } + + self.constructors.insert(pou.name.clone(), Body::Internal(constructor)); + self.stack_constructor.insert(pou.name.clone(), Body::Internal(stack_constructor)); } + + fn visit_user_type_declaration(&mut self, user_type: &plc_ast::ast::UserTypeDeclaration) {} + + fn visit_variable_block(&mut self, var_block: &plc_ast::ast::VariableBlock) {} } impl Initializer<'_> { - pub fn new(index: &Index) -> Initializer<'_> { + pub fn new(id_provider: IdProvider, index: &Index) -> Initializer<'_> { Initializer { + id_provider, index, - implicit_initializers: FxIndexMap::default(), constructors: FxIndexMap::default(), + stack_constructor: FxIndexMap::default(), global_constructor: Vec::new(), } } } mod tests { + use plc_ast::{ast::AstNode, visitor::AstVisitor}; + use plc_diagnostics::diagnostician::Diagnostician; + + fn print_to_string(nodes: &[AstNode]) -> String { + nodes.iter().map(|it| it.as_string()).collect::>().join("\n") + } + + fn print_body_to_string(body: &super::Body) -> String { + match body { + super::Body::Internal(nodes) => print_to_string(nodes), + super::Body::External => "extern".to_string(), + super::Body::None => "none".to_string(), + } + } + + #[test] + fn struct_gets_imlicit_initializer_and_constructor() { + let src = r#" + TYPE MyStruct : STRUCT + a : INT := 5; + b : REAL := 3.14; + c : BOOL := TRUE; + END_STRUCT + "#; + + let diagnostician = Diagnostician::buffered(); + let mut pipeline = + plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) + .unwrap(); + let project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + // Expecting a function declaration: void MyStruct_ctor(MyStruct* self) + // Expecting assignments inside the constructor: self->a = 5; self->b = 3.14; self->c = 1; + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r#""#); + } + + #[test] + fn nested_structs_get_initializers_and_constructors() { + let src = r#" + TYPE InnerStruct : STRUCT + x : INT := 10; + y : INT := 20; + END_STRUCT + + TYPE OuterStruct : STRUCT + inner : InnerStruct; + z : REAL := 2.71; + END_STRUCT + "#; + + let diagnostician = Diagnostician::buffered(); + let mut pipeline = + plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) + .unwrap(); + let project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + // Check for constructors + // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) + // Expecting assignments inside the constructor: self->x = 10; self->y = 20; + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r#""#); + // Expecting a function declaration: void OuterStruct_ctor(OuterStruct* self) + // Expecting a call to InnerStruct_ctor(&self->inner); + // Expecting an assignment: self->z = 2.71; + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @r#""#); + } + + #[test] + fn nested_structs_with_values_get_initializers_and_constructors() { + let src = r#" + TYPE InnerStruct : STRUCT + x : INT := 10; + y : INT := 20; + END_STRUCT + + TYPE OuterStruct : STRUCT + inner : InnerStruct := (x := 1, y := 2); + inner2 : InnerStruct := (y := 3); + z : REAL := 2.71; + END_STRUCT + "#; + + let diagnostician = Diagnostician::buffered(); + let mut pipeline = + plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) + .unwrap(); + let project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + // Check for constructors + // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) + // Expecting assignments inside the constructor: self->x = 10; self->y = 20; + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r#""#); + // Expecting a function declaration: void OuterStruct_ctor(OuterStruct* self) + // Expecting a call to InnerStruct_ctor(&self->inner); + // Expecting a call to InnerStruct_ctor(&self->inner2); + // Expecting assignments: self->inner.x = 1; self->inner.y = 2; + // Expecting assignments: self->inner2.y = 3; + // Expecting an assignment: self->z = 2.71; + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @r#""#); + } + + #[test] + fn variable_with_pointer_initializer_is_added_to_constructor() { + let src = r#" + VAR_GLOBAL + gVar : INT; + myStructVar : MyStruct; + END_VAR + TYPE MyStruct : STRUCT + a : INT := 5; + b : POINTER TO INT := ADR(gVar); + c : BOOL := TRUE; + END_STRUCT + "#; + + let diagnostician = Diagnostician::buffered(); + let mut pipeline = + plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) + .unwrap(); + let project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + // Check for constructor + // Expecting a function declaration: void MyStruct_ctor(MyStruct* self) + // Expecting assignments inside the constructor: self->a = 5; self->c = 1; + // Expecting an assignment: self->b = &gVar; + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r#""#); + } + #[test] - fn struct_gets_imlicit_initializer_and_constructor() {} + fn enum_default_values_in_struct() { + let src = r#" + TYPE MyEnum : (Option1, Option2, Option3) := Option3; + TYPE MyStruct : STRUCT + e : MyEnum := Option2; + n : INT := 42; + END_STRUCT + "#; + + let diagnostician = Diagnostician::buffered(); + let mut pipeline = + plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) + .unwrap(); + let project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + // Expecting a function declaration: void MyEnum_ctor(MyEnum* self) + // Expecting an assignment inside the constructor: *self = 2; + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyEnum").unwrap()), @r#""#); + // Expecting a function declaration: void MyStruct_ctor(MyStruct* self) + // Expecting a call to MyEnum_ctor(&self->e); + // Expecting an assignment: self->e = 1; + // Expecting an assignment: self->n = 42; + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r#""#); + } #[test] - fn struct_gets_constructor() {} + fn nested_struct_with_different_default_values() { + let src = r#" + VAR_GLOBAL + gVar : INT := 10; + END_VAR + + TYPE InnerStruct : STRUCT + a : INT := 1; + b : POINTER TO INT := ADR(gVar); + END_STRUCT + + TYPE InnerStruct2 : STRUCT + c : INT := 4; + d : INT := 5; + inner : InnerStruct := (a := 6); + inner2 : InnerStruct := (b := ADR(gVar)); + END_STRUCT + + TYPE OuterStruct : STRUCT + e : INT := 0; + inner : InnerStruct2 := (a := 1, b := 2, inner := (a := 3)); + inner2 : InnerStruct2 := (d := 8, inner := (b := ADR(gVar))); + inner3 : InnerStruct2 := (inner (a := 9)); + END_STRUCT + "#; + + let diagnostician = Diagnostician::buffered(); + let mut pipeline = + plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) + .unwrap(); + let project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + // Check for constructors + // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) + // Expecting assignments inside the constructor: self->a = 1; self->b = &gVar; + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r#""#); + // Expecting a function declaration: void InnerStruct2_ctor(InnerStruct2* self) + // Expecting a call to InnerStruct_ctor(&self->inner); + // Expecting a call to InnerStruct_ctor(&self->inner2); + // Expecting assignments: self->c = 4; self->d = 5; + // Expecting assignments: self->inner.a = 6; self->inner2.b = &gvar; + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct2").unwrap()), @r#""#); + // Expecting a function declaration: void OuterStruct_ctor(OuterStruct* self) + // Expecting a call to InnerStruct2_ctor(&self->inner); + // Expecting a call to InnerStruct2_ctor(&self->inner2); + // Expecting a call to InnerStruct2_ctor(&self->inner3); + // Expecting an assignment: self->e = 0; + // Expecting assignments: self->inner.a = 1; self->inner.b = 2; self->inner.inner.a = 3; + // Expecting assignments: self->inner2.d = 8; self->inner2.inner.b = &gVar; + // Expecting assignments: self->inner3.inner.a = 9; + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @r#""#); + } + + #[test] + fn global_constructor_is_generated() { + let src = r#" + VAR_GLOBAL + gVar1 : INT := 10; + gVar2 : REAL; + gStructVar : MyStruct; + END_VAR + + TYPE MyStruct : STRUCT + a : INT := 5; + b : POINTER TO INT := ADR(gVar1); + c : BOOL := TRUE; + END_STRUCT + "#; + + let diagnostician = Diagnostician::buffered(); + let mut pipeline = + plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) + .unwrap(); + let project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + // Check for global constructor + // Expecting a call to MyStruct_ctor(&gStructVar); + insta::assert_debug_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); + } #[test] - fn nested_structs_get_initializers_and_constructors() {} + fn function_constructors_have_the_function_name() { + let src = r#" + FUNCTION MyFunction : INT + VAR + localStruct : MyStruct; + END_VAR + END_FUNCTION + + TYPE MyStruct : STRUCT + a : INT := 5; + b : BOOL := TRUE; + END_STRUCT + "#; + + let diagnostician = Diagnostician::buffered(); + let mut pipeline = + plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) + .unwrap(); + let project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + // Check for function constructor on the stack + // Expecting a call to MyStruct_ctor(&localStruct); + insta::assert_debug_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyFunction").unwrap()), @r#""#); + } #[test] - fn variable_with_pointer_initializer_is_added_to_constructor() {} + fn program_temp_variables_are_in_stack_constructor() { + let src = r#" + PROGRAM MyProgram + VAR_TEMP + tempStruct : MyStruct; + END_VAR + VAR + localStruct : MyStruct; + END_VAR + + TYPE MyStruct : STRUCT + a : INT := 5; + b : BOOL := TRUE; + END_STRUCT + "#; + + let diagnostician = Diagnostician::buffered(); + let mut pipeline = + plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) + .unwrap(); + let project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + // Check for program constructor on the stack + // Expecting a call to MyStruct_ctor(&localStruct); + insta::assert_debug_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyProgram").unwrap()), @r#""#); + // Check for program constructor + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyProgram").unwrap()), @r#""#); + } #[test] - fn enum_default_values_in_struct() {} + fn programs_are_globals() { + let src = r#" + PROGRAM MyProgram + VAR + END_VAR + END_PROGRAM + "#; + + let diagnostician = Diagnostician::buffered(); + let mut pipeline = + plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) + .unwrap(); + let project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + // Check for program constructor + // Expecting a call to MyProgram_ctor(&progStruct); + insta::assert_debug_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); + } #[test] - fn nested_struct_with_different_default_values() {} + fn external_structs_and_variables_are_not_initialized() { + let src = r#" + VAR_GLOBAL + internalVar : MyExtStruct; + END_VAR + + {external} + VAR_GLOBAL + extVar : MyExtStruct; + END_VAR + + {external} + TYPE MyExtStruct : STRUCT + a : INT := 5; + b : BOOL := TRUE; + END_STRUCT + "#; + + let diagnostician = Diagnostician::buffered(); + let mut pipeline = + plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) + .unwrap(); + let project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + // Check for internal var assignment in global constructor + // Expecting a call to MyExtStruct_ctor(&internalVar); + // No call to MyExtStruct_ctor(&extVar); + insta::assert_debug_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); + // Check that no constructor is generated for MyExtStruct + insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyExtStruct").unwrap()), @r#""#); + } } diff --git a/tests/test_utils/src/lib.rs b/tests/test_utils/src/lib.rs index 1374b9eed50..99044cc5818 100644 --- a/tests/test_utils/src/lib.rs +++ b/tests/test_utils/src/lib.rs @@ -37,7 +37,7 @@ pub fn parse_and_validate_buffered_ast(src: &str) -> Vec { project.validate(&pipeline.context, &mut pipeline.diagnostician).unwrap(); project.units.into_iter().map(CompilationUnit::from).collect() } - Err(diagnostician) => panic!("{}", diagnostician.buffer().unwrap()), + Err(diagnostics) => panic!("{diagnostics}"), } } From 76ba86caa49758194c8475ff42eeb0ff03802526 Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Wed, 19 Nov 2025 14:15:36 +0100 Subject: [PATCH 14/18] wip init impl --- compiler/plc_driver/src/lib.rs | 16 +- .../src/.initializer.rs.pending-snap | 8 + compiler/plc_lowering/src/initializer.rs | 183 +++++++----------- 3 files changed, 77 insertions(+), 130 deletions(-) create mode 100644 compiler/plc_lowering/src/.initializer.rs.pending-snap diff --git a/compiler/plc_driver/src/lib.rs b/compiler/plc_driver/src/lib.rs index 22c29f15206..2c83c8b34d0 100644 --- a/compiler/plc_driver/src/lib.rs +++ b/compiler/plc_driver/src/lib.rs @@ -200,9 +200,7 @@ impl BuildPipeline { pub fn from_sources(name: &str, src: Vec, diagnostician: Diagnostician) -> Result { // Parse the source to ast let project = Project::new(name.to_string()).with_sources(src); - let Ok(context) = GlobalContext::new().with_source(project.get_sources(), None) else { - return Err(Diagnostic::new(diagnostician.buffer().unwrap_or_default())); - }; + let context = GlobalContext::new().with_source(project.get_sources(), None)?; let pipeline = BuildPipeline { context, project, @@ -219,15 +217,9 @@ impl BuildPipeline { /// Parses, indexes and annotates the project, returning any diagnostics found along the way /// Used for tests where we don't want to run the full pipeline pub fn parse_and_annotate(&mut self) -> Result { - let Ok(project) = self.parse() else { - return Err(Diagnostic::new(self.diagnostician.buffer().unwrap_or_default())); - }; - let Ok(project) = self.index(project) else { - return Err(Diagnostic::new(self.diagnostician.buffer().unwrap_or_default())); - }; - let Ok(project) = self.annotate(project) else { - return Err(Diagnostic::new(self.diagnostician.buffer().unwrap_or_default())); - }; + let project = self.parse()?; + let project = self.index(project)?; + let project = self.annotate(project)?; Ok(project) } } diff --git a/compiler/plc_lowering/src/.initializer.rs.pending-snap b/compiler/plc_lowering/src/.initializer.rs.pending-snap new file mode 100644 index 00000000000..e3fc15caaa4 --- /dev/null +++ b/compiler/plc_lowering/src/.initializer.rs.pending-snap @@ -0,0 +1,8 @@ +{"run_id":"1763542345-452133141","line":401,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"programs_are_globals","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":401,"expression":"print_to_string(&initializer.global_constructor)"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} +{"run_id":"1763542345-452133141","line":428,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"external_structs_and_variables_are_not_initialized","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":428,"expression":"print_to_string(&initializer.global_constructor)"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} +{"run_id":"1763542345-452133141","line":360,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"function_constructors_have_the_function_name","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":360,"expression":"print_body_to_string(initializer.stack_constructor.get(\"MyFunction\").unwrap())"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} +{"run_id":"1763542540-898226143","line":362,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"function_constructors_have_the_function_name","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":362,"expression":"print_body_to_string(initializer.stack_constructor.get(\"MyFunction\").unwrap())"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} +{"run_id":"1763542540-898226143","line":431,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"external_structs_and_variables_are_not_initialized","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":431,"expression":"print_to_string(&initializer.global_constructor)"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} +{"run_id":"1763542540-898226143","line":387,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"program_temp_variables_are_in_stack_constructor","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":387,"expression":"print_body_to_string(initializer.stack_constructor.get(\"MyProgram\").unwrap())"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} +{"run_id":"1763542540-898226143","line":340,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"global_constructor_is_generated","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":340,"expression":"print_to_string(&initializer.global_constructor)"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} +{"run_id":"1763542540-898226143","line":404,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"programs_are_globals","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":404,"expression":"print_to_string(&initializer.global_constructor)"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} diff --git a/compiler/plc_lowering/src/initializer.rs b/compiler/plc_lowering/src/initializer.rs index 9f5e32a83a1..9bfa2875389 100644 --- a/compiler/plc_lowering/src/initializer.rs +++ b/compiler/plc_lowering/src/initializer.rs @@ -40,9 +40,9 @@ enum Body { None, } -pub struct Initializer<'idx> { +pub struct Initializer { id_provider: IdProvider, - index: &'idx Index, + index: Index, /// Stateful constructor per POU/struct constructors: FxIndexMap, /// Constructors for temp and stack variables per POU @@ -52,7 +52,7 @@ pub struct Initializer<'idx> { } //TODO: might need to be a mutable ast visitor -impl AstVisitor for Initializer<'_> { +impl AstVisitor for Initializer { fn visit_pou(&mut self, pou: &plc_ast::ast::Pou) { match pou.linkage { plc_ast::ast::LinkageType::External => { @@ -93,13 +93,25 @@ impl AstVisitor for Initializer<'_> { self.stack_constructor.insert(pou.name.clone(), Body::Internal(stack_constructor)); } - fn visit_user_type_declaration(&mut self, user_type: &plc_ast::ast::UserTypeDeclaration) {} + fn visit_user_type_declaration(&mut self, user_type: &plc_ast::ast::UserTypeDeclaration) { + match user_type.linkage { + plc_ast::ast::LinkageType::External => { + self.constructors.insert(user_type.name.clone(), Body::External); + return; + } + plc_ast::ast::LinkageType::BuiltIn => { + self.constructors.insert(user_type.name.clone(), Body::None); + return; + } + _ => {} + }; - fn visit_variable_block(&mut self, var_block: &plc_ast::ast::VariableBlock) {} + let mut constructor = vec![]; + } } -impl Initializer<'_> { - pub fn new(id_provider: IdProvider, index: &Index) -> Initializer<'_> { +impl Initializer { + pub fn new(id_provider: IdProvider, index: Index) -> Initializer { Initializer { id_provider, index, @@ -110,9 +122,14 @@ impl Initializer<'_> { } } +#[cfg(test)] mod tests { use plc_ast::{ast::AstNode, visitor::AstVisitor}; use plc_diagnostics::diagnostician::Diagnostician; + use plc_driver::pipelines::BuildPipeline; + use plc_source::SourceCode; + + use crate::initializer::Initializer; fn print_to_string(nodes: &[AstNode]) -> String { nodes.iter().map(|it| it.as_string()).collect::>().join("\n") @@ -126,6 +143,20 @@ mod tests { } } + fn parse_and_init(src: &str) -> Initializer { + let src: SourceCode = src.into(); + let diagnostician = Diagnostician::buffered(); + let mut pipeline = BuildPipeline::from_sources("test.st", vec![(src)], diagnostician).unwrap(); + let mut project = pipeline.parse_and_annotate().unwrap(); + // Visit the AST with the Initializer + let mut initializer = + super::Initializer::new(pipeline.context.provider(), std::mem::take(&mut project.index)); + for unit in &project.units { + initializer.visit_compilation_unit(unit.get_unit()); + } + initializer + } + #[test] fn struct_gets_imlicit_initializer_and_constructor() { let src = r#" @@ -134,18 +165,10 @@ mod tests { b : REAL := 3.14; c : BOOL := TRUE; END_STRUCT + END_TYPE "#; - let diagnostician = Diagnostician::buffered(); - let mut pipeline = - plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) - .unwrap(); - let project = pipeline.parse_and_annotate().unwrap(); - // Visit the AST with the Initializer - let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); - for unit in &project.units { - initializer.visit_compilation_unit(unit.get_unit()); - } + let initializer = parse_and_init(src); // Expecting a function declaration: void MyStruct_ctor(MyStruct* self) // Expecting assignments inside the constructor: self->a = 5; self->b = 3.14; self->c = 1; insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r#""#); @@ -158,23 +181,16 @@ mod tests { x : INT := 10; y : INT := 20; END_STRUCT + END_TYPE TYPE OuterStruct : STRUCT inner : InnerStruct; z : REAL := 2.71; END_STRUCT + END_TYPE "#; - let diagnostician = Diagnostician::buffered(); - let mut pipeline = - plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) - .unwrap(); - let project = pipeline.parse_and_annotate().unwrap(); - // Visit the AST with the Initializer - let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); - for unit in &project.units { - initializer.visit_compilation_unit(unit.get_unit()); - } + let initializer = parse_and_init(src); // Check for constructors // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) // Expecting assignments inside the constructor: self->x = 10; self->y = 20; @@ -192,24 +208,17 @@ mod tests { x : INT := 10; y : INT := 20; END_STRUCT + END_TYPE TYPE OuterStruct : STRUCT inner : InnerStruct := (x := 1, y := 2); inner2 : InnerStruct := (y := 3); z : REAL := 2.71; END_STRUCT + END_TYPE "#; - let diagnostician = Diagnostician::buffered(); - let mut pipeline = - plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) - .unwrap(); - let project = pipeline.parse_and_annotate().unwrap(); - // Visit the AST with the Initializer - let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); - for unit in &project.units { - initializer.visit_compilation_unit(unit.get_unit()); - } + let initializer = parse_and_init(src); // Check for constructors // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) // Expecting assignments inside the constructor: self->x = 10; self->y = 20; @@ -235,18 +244,10 @@ mod tests { b : POINTER TO INT := ADR(gVar); c : BOOL := TRUE; END_STRUCT + END_TYPE "#; - let diagnostician = Diagnostician::buffered(); - let mut pipeline = - plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) - .unwrap(); - let project = pipeline.parse_and_annotate().unwrap(); - // Visit the AST with the Initializer - let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); - for unit in &project.units { - initializer.visit_compilation_unit(unit.get_unit()); - } + let initializer = parse_and_init(src); // Check for constructor // Expecting a function declaration: void MyStruct_ctor(MyStruct* self) // Expecting assignments inside the constructor: self->a = 5; self->c = 1; @@ -257,23 +258,15 @@ mod tests { #[test] fn enum_default_values_in_struct() { let src = r#" - TYPE MyEnum : (Option1, Option2, Option3) := Option3; + TYPE MyEnum : (Option1, Option2, Option3) := Option3; END_TYPE TYPE MyStruct : STRUCT e : MyEnum := Option2; n : INT := 42; END_STRUCT + END_TYPE "#; - let diagnostician = Diagnostician::buffered(); - let mut pipeline = - plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) - .unwrap(); - let project = pipeline.parse_and_annotate().unwrap(); - // Visit the AST with the Initializer - let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); - for unit in &project.units { - initializer.visit_compilation_unit(unit.get_unit()); - } + let initializer = parse_and_init(src); // Expecting a function declaration: void MyEnum_ctor(MyEnum* self) // Expecting an assignment inside the constructor: *self = 2; insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyEnum").unwrap()), @r#""#); @@ -295,6 +288,7 @@ mod tests { a : INT := 1; b : POINTER TO INT := ADR(gVar); END_STRUCT + END_TYPE TYPE InnerStruct2 : STRUCT c : INT := 4; @@ -302,6 +296,7 @@ mod tests { inner : InnerStruct := (a := 6); inner2 : InnerStruct := (b := ADR(gVar)); END_STRUCT + END_TYPE TYPE OuterStruct : STRUCT e : INT := 0; @@ -309,18 +304,10 @@ mod tests { inner2 : InnerStruct2 := (d := 8, inner := (b := ADR(gVar))); inner3 : InnerStruct2 := (inner (a := 9)); END_STRUCT + END_TYPE "#; - let diagnostician = Diagnostician::buffered(); - let mut pipeline = - plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) - .unwrap(); - let project = pipeline.parse_and_annotate().unwrap(); - // Visit the AST with the Initializer - let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); - for unit in &project.units { - initializer.visit_compilation_unit(unit.get_unit()); - } + let initializer = parse_and_init(src); // Check for constructors // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) // Expecting assignments inside the constructor: self->a = 1; self->b = &gVar; @@ -356,18 +343,10 @@ mod tests { b : POINTER TO INT := ADR(gVar1); c : BOOL := TRUE; END_STRUCT + END_TYPE "#; - let diagnostician = Diagnostician::buffered(); - let mut pipeline = - plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) - .unwrap(); - let project = pipeline.parse_and_annotate().unwrap(); - // Visit the AST with the Initializer - let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); - for unit in &project.units { - initializer.visit_compilation_unit(unit.get_unit()); - } + let initializer = parse_and_init(src); // Check for global constructor // Expecting a call to MyStruct_ctor(&gStructVar); insta::assert_debug_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); @@ -386,18 +365,10 @@ mod tests { a : INT := 5; b : BOOL := TRUE; END_STRUCT + END_TYPE "#; - let diagnostician = Diagnostician::buffered(); - let mut pipeline = - plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) - .unwrap(); - let project = pipeline.parse_and_annotate().unwrap(); - // Visit the AST with the Initializer - let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); - for unit in &project.units { - initializer.visit_compilation_unit(unit.get_unit()); - } + let initializer = parse_and_init(src); // Check for function constructor on the stack // Expecting a call to MyStruct_ctor(&localStruct); insta::assert_debug_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyFunction").unwrap()), @r#""#); @@ -413,23 +384,16 @@ mod tests { VAR localStruct : MyStruct; END_VAR + END_PROGRAM TYPE MyStruct : STRUCT a : INT := 5; b : BOOL := TRUE; END_STRUCT + END_TYPE "#; - let diagnostician = Diagnostician::buffered(); - let mut pipeline = - plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) - .unwrap(); - let project = pipeline.parse_and_annotate().unwrap(); - // Visit the AST with the Initializer - let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); - for unit in &project.units { - initializer.visit_compilation_unit(unit.get_unit()); - } + let initializer = parse_and_init(src); // Check for program constructor on the stack // Expecting a call to MyStruct_ctor(&localStruct); insta::assert_debug_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyProgram").unwrap()), @r#""#); @@ -446,16 +410,7 @@ mod tests { END_PROGRAM "#; - let diagnostician = Diagnostician::buffered(); - let mut pipeline = - plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) - .unwrap(); - let project = pipeline.parse_and_annotate().unwrap(); - // Visit the AST with the Initializer - let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); - for unit in &project.units { - initializer.visit_compilation_unit(unit.get_unit()); - } + let initializer = parse_and_init(src); // Check for program constructor // Expecting a call to MyProgram_ctor(&progStruct); insta::assert_debug_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); @@ -478,18 +433,10 @@ mod tests { a : INT := 5; b : BOOL := TRUE; END_STRUCT + END_TYPE "#; - let diagnostician = Diagnostician::buffered(); - let mut pipeline = - plc_driver::pipelines::BuildPipeline::from_sources("test.st", vec![(src)], diagnostician) - .unwrap(); - let project = pipeline.parse_and_annotate().unwrap(); - // Visit the AST with the Initializer - let mut initializer = super::Initializer::new(pipeline.context.provider(), &project.index); - for unit in &project.units { - initializer.visit_compilation_unit(unit.get_unit()); - } + let initializer = parse_and_init(src); // Check for internal var assignment in global constructor // Expecting a call to MyExtStruct_ctor(&internalVar); // No call to MyExtStruct_ctor(&extVar); From 9ab8718dca99edbdb583d069bbac1ba9d687eecc Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Fri, 21 Nov 2025 08:11:53 +0100 Subject: [PATCH 15/18] wip: basic tests working, integrating into driver wip: constructor sequence --- compiler/plc_ast/src/ast.rs | 9 + compiler/plc_driver/src/pipelines.rs | 17 +- .../plc_driver/src/pipelines/participant.rs | 31 +- compiler/plc_driver/src/tests.rs | 2 +- .../src/.initializer.rs.pending-snap | 8 - compiler/plc_lowering/src/initializer.rs | 283 ++++++++++++++---- compiler/plc_project/src/project.rs | 3 +- src/parser.rs | 6 +- 8 files changed, 264 insertions(+), 95 deletions(-) delete mode 100644 compiler/plc_lowering/src/.initializer.rs.pending-snap diff --git a/compiler/plc_ast/src/ast.rs b/compiler/plc_ast/src/ast.rs index 91c4406861d..72f600047cd 100644 --- a/compiler/plc_ast/src/ast.rs +++ b/compiler/plc_ast/src/ast.rs @@ -500,6 +500,15 @@ pub enum VariableBlockType { InOut, External, } +impl VariableBlockType { + pub fn is_temp(&self) -> bool { + matches!(self, VariableBlockType::Temp) + } + + pub fn is_local(&self) -> bool { + matches!(self, VariableBlockType::Local) + } +} impl Display for VariableBlockType { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { diff --git a/compiler/plc_driver/src/pipelines.rs b/compiler/plc_driver/src/pipelines.rs index c89c031df60..c3919382918 100644 --- a/compiler/plc_driver/src/pipelines.rs +++ b/compiler/plc_driver/src/pipelines.rs @@ -255,9 +255,9 @@ impl BuildPipeline { Box::new(VirtualTableGenerator::new(self.context.provider())), Box::new(PolymorphicCallLowerer::new(self.context.provider())), Box::new(PropertyLowerer::new(self.context.provider())), - Box::new(InitParticipant::new(self.project.get_init_symbol_name(), self.context.provider())), Box::new(AggregateTypeLowerer::new(self.context.provider())), Box::new(InheritanceLowerer::new(self.context.provider())), + Box::new(InitParticipant::new(self.project.get_init_symbol_name(), self.context.provider())), ] } /// Register all default participants (excluding codegen/linking) @@ -605,21 +605,6 @@ impl IndexedProject { AnnotatedProject { units: annotated_units, index, annotations } } - - /// Adds additional, internally generated units to provide functions to be called by a runtime - /// in order to initialize pointers before first cycle. - /// - /// This method will consume the provided indexed project, modify the AST and re-index each unit - pub fn extend_with_init_units( - self, - symbol_name: &'static str, - id_provider: IdProvider, - ) -> IndexedProject { - let units = self.project.units; - let lowered = - InitVisitor::visit(units, self.index, self.unresolvables, id_provider.clone(), symbol_name); - ParsedProject { units: lowered }.index(id_provider.clone()) - } } #[derive(Debug)] diff --git a/compiler/plc_driver/src/pipelines/participant.rs b/compiler/plc_driver/src/pipelines/participant.rs index f2993851431..bc648dd673f 100644 --- a/compiler/plc_driver/src/pipelines/participant.rs +++ b/compiler/plc_driver/src/pipelines/participant.rs @@ -11,7 +11,7 @@ use std::{ sync::{Arc, Mutex, RwLock}, }; -use ast::provider::IdProvider; +use ast::{provider::IdProvider, visitor::AstVisitor}; use plc::{ codegen::GeneratedModule, lowering::{ @@ -21,7 +21,7 @@ use plc::{ ConfigFormat, OnlineChange, Target, }; use plc_diagnostics::diagnostics::Diagnostic; -use plc_lowering::inheritance::InheritanceLowerer; +use plc_lowering::{inheritance::InheritanceLowerer, initializer::Initializer}; use project::{object::Object, project::LibraryInformation}; use source_code::SourceContainer; @@ -224,8 +224,33 @@ impl InitParticipant { } impl PipelineParticipantMut for InitParticipant { + /* + + /// Adds additional, internally generated units to provide functions to be called by a runtime + /// in order to initialize pointers before first cycle. + /// + /// This method will consume the provided indexed project, modify the AST and re-index each unit + pub fn extend_with_init_units( + self, + symbol_name: &'static str, + id_provider: IdProvider, + ) -> IndexedProject { + let units = self.project.units; + let lowered = + InitVisitor::visit(units, self.index, self.unresolvables, id_provider.clone(), symbol_name); + ParsedProject { units: lowered }.index(id_provider.clone()) + } + */ fn pre_annotate(&mut self, indexed_project: IndexedProject) -> IndexedProject { - indexed_project.extend_with_init_units(self.symbol_name, self.id_provider.clone()) + // Create a new init lowerer + let IndexedProject { mut project, index, .. } = indexed_project; + for unit in project.units.iter_mut() { + let mut initializer = Initializer::new(self.id_provider.clone()); + initializer.apply_initialization(unit, &index); + } + // indexed_project.extend_with_init_units(self.symbol_name, self.id_provider.clone()) + // Append new units and constructor to the ast and re-index + project.index(self.id_provider.clone()) } } diff --git a/compiler/plc_driver/src/tests.rs b/compiler/plc_driver/src/tests.rs index a213a1a4f58..8cd569165d0 100644 --- a/compiler/plc_driver/src/tests.rs +++ b/compiler/plc_driver/src/tests.rs @@ -52,7 +52,7 @@ where pipelines::ParsedProject::parse(&ctxt, &project, &mut diagnostician)? //Index .index(ctxt.provider()) - .extend_with_init_units(project.get_init_symbol_name(), ctxt.provider()) + // .extend_with_init_units(project.get_init_symbol_name(), ctxt.provider()) //Resolve .annotate(ctxt.provider()) //Codegen diff --git a/compiler/plc_lowering/src/.initializer.rs.pending-snap b/compiler/plc_lowering/src/.initializer.rs.pending-snap deleted file mode 100644 index e3fc15caaa4..00000000000 --- a/compiler/plc_lowering/src/.initializer.rs.pending-snap +++ /dev/null @@ -1,8 +0,0 @@ -{"run_id":"1763542345-452133141","line":401,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"programs_are_globals","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":401,"expression":"print_to_string(&initializer.global_constructor)"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} -{"run_id":"1763542345-452133141","line":428,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"external_structs_and_variables_are_not_initialized","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":428,"expression":"print_to_string(&initializer.global_constructor)"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} -{"run_id":"1763542345-452133141","line":360,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"function_constructors_have_the_function_name","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":360,"expression":"print_body_to_string(initializer.stack_constructor.get(\"MyFunction\").unwrap())"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} -{"run_id":"1763542540-898226143","line":362,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"function_constructors_have_the_function_name","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":362,"expression":"print_body_to_string(initializer.stack_constructor.get(\"MyFunction\").unwrap())"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} -{"run_id":"1763542540-898226143","line":431,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"external_structs_and_variables_are_not_initialized","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":431,"expression":"print_to_string(&initializer.global_constructor)"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} -{"run_id":"1763542540-898226143","line":387,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"program_temp_variables_are_in_stack_constructor","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":387,"expression":"print_body_to_string(initializer.stack_constructor.get(\"MyProgram\").unwrap())"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} -{"run_id":"1763542540-898226143","line":340,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"global_constructor_is_generated","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":340,"expression":"print_to_string(&initializer.global_constructor)"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} -{"run_id":"1763542540-898226143","line":404,"new":{"module_name":"plc_lowering__initializer__tests","snapshot_name":"programs_are_globals","metadata":{"source":"compiler/plc_lowering/src/initializer.rs","assertion_line":404,"expression":"print_to_string(&initializer.global_constructor)"},"snapshot":"\"\""},"old":{"module_name":"plc_lowering__initializer__tests","metadata":{},"snapshot":""}} diff --git a/compiler/plc_lowering/src/initializer.rs b/compiler/plc_lowering/src/initializer.rs index 9bfa2875389..ed7eeab3ffc 100644 --- a/compiler/plc_lowering/src/initializer.rs +++ b/compiler/plc_lowering/src/initializer.rs @@ -20,18 +20,18 @@ //! - Built-in types and variables are not re-initialized in the global //! constructor. -use std::any::Any; +use std::{any::Any, default}; use plc::{ index::{FxIndexMap, Index}, - lowering::helper::create_assignment, + lowering::helper::{create_assignment, create_call_statement}, }; use plc_ast::{ - ast::{AstFactory, AstNode, CompilationUnit}, - mut_visitor::AstVisitorMut, + ast::{AstFactory, AstNode, CompilationUnit, PouType, VariableBlockType}, provider::IdProvider, - visitor::AstVisitor, + visitor::{AstVisitor, Walker}, }; +use plc_source::source_location::SourceLocation; #[derive(Debug, PartialEq)] enum Body { @@ -40,20 +40,53 @@ enum Body { None, } -pub struct Initializer { - id_provider: IdProvider, - index: Index, +pub struct Initializer<'idx> { + pub id_provider: IdProvider, + index: Option<&'idx Index>, /// Stateful constructor per POU/struct constructors: FxIndexMap, + /// User defined constructor names per POU/datatype + user_defined_constructors: FxIndexMap, /// Constructors for temp and stack variables per POU stack_constructor: FxIndexMap, /// Global constructor statements - global_constructor: Vec, + global_constructor: (Vec, Vec), + context: Context, +} + +#[derive(Default)] +struct Context { + pub current_pou: Option, + pub current_datatype: Option, + pub current_variable_block: Option, +} + +impl Context { + fn enter_pou(&mut self, pou: &str) { + self.current_pou = Some(pou.to_string()); + } + fn exit_pou(&mut self) { + self.current_pou = None; + } + fn enter_datatype(&mut self, datatype: &str) { + self.current_datatype = Some(datatype.to_string()); + } + fn exit_datatype(&mut self) { + self.current_datatype = None; + } + fn enter_variable_block(&mut self, block: &plc_ast::ast::VariableBlock) { + self.current_variable_block = Some(block.kind); + } + fn exit_variable_block(&mut self) { + self.current_variable_block = None; + } } //TODO: might need to be a mutable ast visitor -impl AstVisitor for Initializer { +impl AstVisitor for Initializer<'_> { fn visit_pou(&mut self, pou: &plc_ast::ast::Pou) { + self.context.enter_pou(pou.name.as_str()); + self.user_defined_constructors.insert(pou.name.clone(), "FB_INIT".to_string()); match pou.linkage { plc_ast::ast::LinkageType::External => { self.constructors.insert(pou.name.clone(), Body::External); @@ -65,59 +98,150 @@ impl AstVisitor for Initializer { } _ => {} }; + pou.walk(self); - let mut constructor = vec![]; - let mut stack_constructor = vec![]; + self.constructors.insert(pou.name.clone(), Body::Internal(vec![])); + self.stack_constructor.insert(pou.name.clone(), Body::Internal(vec![])); + self.context.exit_pou(); + } - // Collect variable initializers - for var in pou.variable_blocks.iter() { - for variable in var.variables.iter() { - if let Some(initializer) = &variable.initializer { - // Create an assignment "self. := " - let assignment = create_assignment( - variable.get_name(), - Some("self"), - initializer, - self.id_provider.clone(), - ); - if var.is_temp() || (var.is_local() && !pou.is_stateful()) { - stack_constructor.push(assignment); - } else { - constructor.push(assignment); - } - } + fn visit_variable_block(&mut self, block: &plc_ast::ast::VariableBlock) { + self.context.enter_variable_block(block); + block.walk(self); + self.context.exit_variable_block(); + } + + fn visit_variable(&mut self, variable: &plc_ast::ast::Variable) { + // grab the index + let index = self.index.expect("index is set at this stage"); + let variable_block_type = + self.context.current_variable_block.expect("variable block is set at this stage"); + // Find if the parent is stateful + let is_stateful = if let Some(pou_name) = &self.context.current_pou { + index.find_pou(pou_name).is_some_and(|it| it.is_stateful()) + } else { + true + }; + if let Some(initializer) = &variable.initializer { + // Create a call to the type constructor + // Create a call to the type's user defined constructor + // Create an assignment "self. := " + let assignment = + create_assignment(variable.get_name(), Some("self"), initializer, self.id_provider.clone()); + if variable_block_type.is_temp() || (variable_block_type.is_local() && is_stateful) { + self.add_to_current_stack_constructor(assignment); + } else { + self.add_to_current_constructor(assignment); } } - - self.constructors.insert(pou.name.clone(), Body::Internal(constructor)); - self.stack_constructor.insert(pou.name.clone(), Body::Internal(stack_constructor)); } fn visit_user_type_declaration(&mut self, user_type: &plc_ast::ast::UserTypeDeclaration) { + let name = user_type.data_type.get_name().expect("name is set at this stage").to_string(); match user_type.linkage { plc_ast::ast::LinkageType::External => { - self.constructors.insert(user_type.name.clone(), Body::External); + self.constructors.insert(name, Body::External); return; } plc_ast::ast::LinkageType::BuiltIn => { - self.constructors.insert(user_type.name.clone(), Body::None); + self.constructors.insert(name, Body::None); return; } _ => {} }; let mut constructor = vec![]; + if let plc_ast::ast::DataType::StructType { variables, .. } = &user_type.data_type { + for variable in variables.iter() { + if let Some(initializer) = &variable.initializer { + // Create an assignment "self. := " + let assignment = create_assignment( + variable.get_name(), + Some("self"), + initializer, + self.id_provider.clone(), + ); + constructor.push(assignment); + } + } + } + // Insert the initializer as the assignment to self + if let Some(initializer) = &user_type.initializer { + let assignment = create_assignment("self", None, initializer, self.id_provider.clone()); + constructor.push(assignment); + } + self.constructors.insert(name.to_string(), Body::Internal(constructor)); } } -impl Initializer { - pub fn new(id_provider: IdProvider, index: Index) -> Initializer { +impl<'idx> Initializer<'idx> { + pub fn new(id_provider: IdProvider) -> Initializer<'idx> { Initializer { id_provider, - index, - constructors: FxIndexMap::default(), - stack_constructor: FxIndexMap::default(), - global_constructor: Vec::new(), + index: None, + constructors: Default::default(), + user_defined_constructors: Default::default(), + stack_constructor: Default::default(), + global_constructor: Default::default(), + context: Default::default(), + } + } + + pub fn apply_initialization(&mut self, unit: &mut CompilationUnit, index: &'idx Index) { + // Set the index + self.index = Some(index); + // Visit the unit and prepare constructors + // Add each constructor function to the unit as a new function + // Add the construction calls for stack variables to each function + // Remove the index + self.index = None + } + + fn add_to_current_stack_constructor(&mut self, node: Vec) { + if let Some(current_pou) = self.context.current_pou.as_ref() { + if let Some(body) = self.stack_constructor.get_mut(current_pou) { + match body { + Body::Internal(nodes) => nodes.extend(node), + _ => {} + } + } + } + } + + fn add_to_current_constructor(&mut self, node: Vec) { + if let Some(current_struct) = + self.context.current_pou.as_ref().or_else(|| self.context.current_datatype.as_ref()) + { + if let Some(body) = self.constructors.get_mut(current_struct) { + match body { + Body::Internal(nodes) => nodes.extend(node), + _ => {} + } + } + } + } + + fn get_constructor_call(&self, type_name: &str, var_name: &str) -> Option { + if self.constructors.contains_key(type_name) { + let call = create_call_statement( + &format!("{}_ctor", type_name), + var_name, + None, + self.id_provider.clone(), + &SourceLocation::internal(), + ); + Some(call) + } else { + None + } + } + + fn get_user_defined_constructor_call(&self, type_name: &str, var_name: &str) -> Option { + if let Some(index) = self.index { + // Search for the user defined constructor for the given struct + None + } else { + None } } } @@ -126,7 +250,7 @@ impl Initializer { mod tests { use plc_ast::{ast::AstNode, visitor::AstVisitor}; use plc_diagnostics::diagnostician::Diagnostician; - use plc_driver::pipelines::BuildPipeline; + use plc_driver::pipelines::{AnnotatedProject, BuildPipeline}; use plc_source::SourceCode; use crate::initializer::Initializer; @@ -147,11 +271,10 @@ mod tests { let src: SourceCode = src.into(); let diagnostician = Diagnostician::buffered(); let mut pipeline = BuildPipeline::from_sources("test.st", vec![(src)], diagnostician).unwrap(); - let mut project = pipeline.parse_and_annotate().unwrap(); + let AnnotatedProject { units, .. } = pipeline.parse_and_annotate().unwrap(); // Visit the AST with the Initializer - let mut initializer = - super::Initializer::new(pipeline.context.provider(), std::mem::take(&mut project.index)); - for unit in &project.units { + let mut initializer = super::Initializer::new(pipeline.context.provider()); + for unit in units { initializer.visit_compilation_unit(unit.get_unit()); } initializer @@ -171,7 +294,11 @@ mod tests { let initializer = parse_and_init(src); // Expecting a function declaration: void MyStruct_ctor(MyStruct* self) // Expecting assignments inside the constructor: self->a = 5; self->b = 3.14; self->c = 1; - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r" + self.a := 5 + self.b := 3.14 + self.c := TRUE + "); } #[test] @@ -194,11 +321,14 @@ mod tests { // Check for constructors // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) // Expecting assignments inside the constructor: self->x = 10; self->y = 20; - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r" + self.x := 10 + self.y := 20 + "); // Expecting a function declaration: void OuterStruct_ctor(OuterStruct* self) // Expecting a call to InnerStruct_ctor(&self->inner); // Expecting an assignment: self->z = 2.71; - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @"self.z := 2.71"); } #[test] @@ -222,14 +352,21 @@ mod tests { // Check for constructors // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) // Expecting assignments inside the constructor: self->x = 10; self->y = 20; - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r" + self.x := 10 + self.y := 20 + "); // Expecting a function declaration: void OuterStruct_ctor(OuterStruct* self) // Expecting a call to InnerStruct_ctor(&self->inner); // Expecting a call to InnerStruct_ctor(&self->inner2); // Expecting assignments: self->inner.x = 1; self->inner.y = 2; // Expecting assignments: self->inner2.y = 3; // Expecting an assignment: self->z = 2.71; - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @r" + self.inner := (x := 1, y := 2) + self.inner2 := (y := 3) + self.z := 2.71 + "); } #[test] @@ -252,7 +389,11 @@ mod tests { // Expecting a function declaration: void MyStruct_ctor(MyStruct* self) // Expecting assignments inside the constructor: self->a = 5; self->c = 1; // Expecting an assignment: self->b = &gVar; - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r" + self.a := 5 + self.b := ADR(gVar) + self.c := TRUE + "); } #[test] @@ -269,12 +410,15 @@ mod tests { let initializer = parse_and_init(src); // Expecting a function declaration: void MyEnum_ctor(MyEnum* self) // Expecting an assignment inside the constructor: *self = 2; - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyEnum").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyEnum").unwrap()), @"self := Option3"); // Expecting a function declaration: void MyStruct_ctor(MyStruct* self) // Expecting a call to MyEnum_ctor(&self->e); // Expecting an assignment: self->e = 1; // Expecting an assignment: self->n = 42; - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r" + self.e := Option2 + self.n := 42 + "); } #[test] @@ -311,13 +455,21 @@ mod tests { // Check for constructors // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) // Expecting assignments inside the constructor: self->a = 1; self->b = &gVar; - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r" + self.a := 1 + self.b := ADR(gVar) + "); // Expecting a function declaration: void InnerStruct2_ctor(InnerStruct2* self) // Expecting a call to InnerStruct_ctor(&self->inner); // Expecting a call to InnerStruct_ctor(&self->inner2); // Expecting assignments: self->c = 4; self->d = 5; // Expecting assignments: self->inner.a = 6; self->inner2.b = &gvar; - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct2").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct2").unwrap()), @r" + self.c := 4 + self.d := 5 + self.inner := (a := 6) + self.inner2 := (b := ADR(gVar)) + "); // Expecting a function declaration: void OuterStruct_ctor(OuterStruct* self) // Expecting a call to InnerStruct2_ctor(&self->inner); // Expecting a call to InnerStruct2_ctor(&self->inner2); @@ -326,7 +478,12 @@ mod tests { // Expecting assignments: self->inner.a = 1; self->inner.b = 2; self->inner.inner.a = 3; // Expecting assignments: self->inner2.d = 8; self->inner2.inner.b = &gVar; // Expecting assignments: self->inner3.inner.a = 9; - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @r" + self.e := 0 + self.inner := (a := 1, b := 2, inner := (a := 3)) + self.inner2 := (d := 8, inner := (b := ADR(gVar))) + self.inner3 := (inner(a := 9)) + "); } #[test] @@ -349,7 +506,7 @@ mod tests { let initializer = parse_and_init(src); // Check for global constructor // Expecting a call to MyStruct_ctor(&gStructVar); - insta::assert_debug_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); + insta::assert_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); } #[test] @@ -371,7 +528,7 @@ mod tests { let initializer = parse_and_init(src); // Check for function constructor on the stack // Expecting a call to MyStruct_ctor(&localStruct); - insta::assert_debug_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyFunction").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyFunction").unwrap()), @r#""#); } #[test] @@ -396,9 +553,9 @@ mod tests { let initializer = parse_and_init(src); // Check for program constructor on the stack // Expecting a call to MyStruct_ctor(&localStruct); - insta::assert_debug_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyProgram").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyProgram").unwrap()), @r#""#); // Check for program constructor - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyProgram").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyProgram").unwrap()), @r#""#); } #[test] @@ -413,7 +570,7 @@ mod tests { let initializer = parse_and_init(src); // Check for program constructor // Expecting a call to MyProgram_ctor(&progStruct); - insta::assert_debug_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); + insta::assert_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); } #[test] @@ -440,8 +597,8 @@ mod tests { // Check for internal var assignment in global constructor // Expecting a call to MyExtStruct_ctor(&internalVar); // No call to MyExtStruct_ctor(&extVar); - insta::assert_debug_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); + insta::assert_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); // Check that no constructor is generated for MyExtStruct - insta::assert_debug_snapshot!(print_body_to_string(initializer.constructors.get("MyExtStruct").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyExtStruct").unwrap()), @"extern"); } } diff --git a/compiler/plc_project/src/project.rs b/compiler/plc_project/src/project.rs index b00c0f507cb..d9992a1b6eb 100644 --- a/compiler/plc_project/src/project.rs +++ b/compiler/plc_project/src/project.rs @@ -309,7 +309,8 @@ impl Project { /// Returns the symbol name of this projects main initializer function pub fn get_init_symbol_name(&self) -> &'static str { //Converts into static because this will live forever - format!("__init___{}", self.get_name().replace(['.', '-'], "_")).leak() + // TODO: this is for compatibility and will be removed in future versions + format!("__init___{}", self.get_name().replace(['.', '-', '*'], "_")).leak() } } diff --git a/src/parser.rs b/src/parser.rs index cfa7d00626c..f10d4855675 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -129,7 +129,7 @@ pub fn parse(mut lexer: ParseSession, lnk: LinkageType, file_name: &'static str) unit.implementations.append(&mut actions); } KeywordType => { - let unit_type = parse_type(&mut lexer); + let unit_type = parse_type(&mut lexer, linkage); for utype in unit_type { unit.user_types.push(utype); } @@ -851,7 +851,7 @@ fn parse_action( } // TYPE ... END_TYPE -fn parse_type(lexer: &mut ParseSession) -> Vec { +fn parse_type(lexer: &mut ParseSession, linkage: LinkageType) -> Vec { lexer.advance(); // consume the TYPE parse_any_in_region(lexer, vec![KeywordEndType], |lexer| { @@ -869,7 +869,7 @@ fn parse_type(lexer: &mut ParseSession) -> Vec { initializer, location: name_location, scope: lexer.scope.clone(), - linkage: LinkageType::Internal, + linkage, }); } } From 69e0783bc36e4777fd9dd7678908609811d5f913 Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Sun, 30 Nov 2025 21:21:08 +0000 Subject: [PATCH 16/18] add global constructor and fb_init logic --- compiler/plc_ast/src/ast.rs | 8 +- compiler/plc_driver/src/pipelines.rs | 4 +- .../plc_driver/src/pipelines/participant.rs | 10 +- compiler/plc_lowering/src/initializer.rs | 229 +++++++++++++----- src/validation/array.rs | 2 +- src/validation/variable.rs | 2 +- 6 files changed, 186 insertions(+), 69 deletions(-) diff --git a/compiler/plc_ast/src/ast.rs b/compiler/plc_ast/src/ast.rs index 72f600047cd..fcdf56f2579 100644 --- a/compiler/plc_ast/src/ast.rs +++ b/compiler/plc_ast/src/ast.rs @@ -508,6 +508,10 @@ impl VariableBlockType { pub fn is_local(&self) -> bool { matches!(self, VariableBlockType::Local) } + + pub fn is_global(&self) -> bool { + matches!(self, VariableBlockType::Global) + } } impl Display for VariableBlockType { @@ -682,9 +686,9 @@ impl DataTypeDeclaration { } } - pub fn get_referenced_type(&self) -> Option { + pub fn get_referenced_type(&self) -> Option<&str> { let DataTypeDeclaration::Reference { referenced_type, .. } = self else { return None }; - Some(referenced_type.to_owned()) + Some(referenced_type.as_str()) } pub fn get_inner_pointer_ty(&self) -> Option { diff --git a/compiler/plc_driver/src/pipelines.rs b/compiler/plc_driver/src/pipelines.rs index c3919382918..d352f21978d 100644 --- a/compiler/plc_driver/src/pipelines.rs +++ b/compiler/plc_driver/src/pipelines.rs @@ -24,8 +24,8 @@ use plc::{ index::{indexer, FxIndexSet, Index}, linker::LinkerType, lowering::{ - calls::AggregateTypeLowerer, init_visitor::InitVisitor, polymorphism::PolymorphicCallLowerer, - property::PropertyLowerer, vtable::VirtualTableGenerator, + calls::AggregateTypeLowerer, polymorphism::PolymorphicCallLowerer, property::PropertyLowerer, + vtable::VirtualTableGenerator, }, output::FormatOption, parser::parse_file, diff --git a/compiler/plc_driver/src/pipelines/participant.rs b/compiler/plc_driver/src/pipelines/participant.rs index bc648dd673f..e07386a87b1 100644 --- a/compiler/plc_driver/src/pipelines/participant.rs +++ b/compiler/plc_driver/src/pipelines/participant.rs @@ -243,13 +243,11 @@ impl PipelineParticipantMut for InitParticipant { */ fn pre_annotate(&mut self, indexed_project: IndexedProject) -> IndexedProject { // Create a new init lowerer - let IndexedProject { mut project, index, .. } = indexed_project; - for unit in project.units.iter_mut() { - let mut initializer = Initializer::new(self.id_provider.clone()); - initializer.apply_initialization(unit, &index); - } - // indexed_project.extend_with_init_units(self.symbol_name, self.id_provider.clone()) + let IndexedProject { project: ParsedProject { units }, index, .. } = indexed_project; + let mut initializer = Initializer::new(self.id_provider.clone()); + let units = initializer.apply_initialization(units, index); // Append new units and constructor to the ast and re-index + let project = ParsedProject { units }; project.index(self.id_provider.clone()) } } diff --git a/compiler/plc_lowering/src/initializer.rs b/compiler/plc_lowering/src/initializer.rs index ed7eeab3ffc..ad03c08076b 100644 --- a/compiler/plc_lowering/src/initializer.rs +++ b/compiler/plc_lowering/src/initializer.rs @@ -18,16 +18,14 @@ //! - External variables are not re-initialized in the global constructor, they are assumed to be //! initialized externally. //! - Built-in types and variables are not re-initialized in the global -//! constructor. - -use std::{any::Any, default}; +//! constructor. use plc::{ index::{FxIndexMap, Index}, - lowering::helper::{create_assignment, create_call_statement}, + lowering::helper::{create_assignment, create_call_statement, create_member_reference}, }; use plc_ast::{ - ast::{AstFactory, AstNode, CompilationUnit, PouType, VariableBlockType}, + ast::{AstFactory, AstNode, CompilationUnit, VariableBlockType}, provider::IdProvider, visitor::{AstVisitor, Walker}, }; @@ -40,9 +38,10 @@ enum Body { None, } -pub struct Initializer<'idx> { +#[derive(Debug)] +pub struct Initializer { pub id_provider: IdProvider, - index: Option<&'idx Index>, + index: Option, /// Stateful constructor per POU/struct constructors: FxIndexMap, /// User defined constructor names per POU/datatype @@ -50,11 +49,11 @@ pub struct Initializer<'idx> { /// Constructors for temp and stack variables per POU stack_constructor: FxIndexMap, /// Global constructor statements - global_constructor: (Vec, Vec), + global_constructor: Vec, context: Context, } -#[derive(Default)] +#[derive(Default, Debug)] struct Context { pub current_pou: Option, pub current_datatype: Option, @@ -82,8 +81,9 @@ impl Context { } } -//TODO: might need to be a mutable ast visitor -impl AstVisitor for Initializer<'_> { +//T +//ODO: might need to be a mutable ast visitor +impl AstVisitor for Initializer { fn visit_pou(&mut self, pou: &plc_ast::ast::Pou) { self.context.enter_pou(pou.name.as_str()); self.user_defined_constructors.insert(pou.name.clone(), "FB_INIT".to_string()); @@ -98,10 +98,14 @@ impl AstVisitor for Initializer<'_> { } _ => {} }; - pou.walk(self); - self.constructors.insert(pou.name.clone(), Body::Internal(vec![])); self.stack_constructor.insert(pou.name.clone(), Body::Internal(vec![])); + pou.walk(self); + // call the user defined constructor here + if let Some(user_defined_ctor_call) = self.get_user_defined_constructor_call(&pou.name, "self") { + self.add_to_current_constructor(vec![user_defined_ctor_call]); + } + // If a program, add a constructor call to the global variables self.context.exit_pou(); } @@ -113,7 +117,7 @@ impl AstVisitor for Initializer<'_> { fn visit_variable(&mut self, variable: &plc_ast::ast::Variable) { // grab the index - let index = self.index.expect("index is set at this stage"); + let index = self.index.as_ref().expect("index is set at this stage"); let variable_block_type = self.context.current_variable_block.expect("variable block is set at this stage"); // Find if the parent is stateful @@ -123,35 +127,64 @@ impl AstVisitor for Initializer<'_> { true }; if let Some(initializer) = &variable.initializer { + let mut stmts = vec![]; // Create a call to the type constructor - // Create a call to the type's user defined constructor + if let Some(constructor) = variable + .data_type_declaration + .get_referenced_type() + .and_then(|it| self.get_constructor_call(it, variable.get_name())) + { + stmts.push(constructor); + } // Create an assignment "self. := " let assignment = create_assignment(variable.get_name(), Some("self"), initializer, self.id_provider.clone()); - if variable_block_type.is_temp() || (variable_block_type.is_local() && is_stateful) { - self.add_to_current_stack_constructor(assignment); + stmts.push(assignment); + if variable_block_type.is_temp() || (variable_block_type.is_local() && !is_stateful) { + self.add_to_current_stack_constructor(stmts); } else { - self.add_to_current_constructor(assignment); + self.add_to_current_constructor(stmts); } } } fn visit_user_type_declaration(&mut self, user_type: &plc_ast::ast::UserTypeDeclaration) { - let name = user_type.data_type.get_name().expect("name is set at this stage").to_string(); + let name = user_type.data_type.get_name().expect("name is set at this stage"); + self.context.enter_datatype(name); match user_type.linkage { plc_ast::ast::LinkageType::External => { - self.constructors.insert(name, Body::External); + self.constructors.insert(name.to_string(), Body::External); return; } plc_ast::ast::LinkageType::BuiltIn => { - self.constructors.insert(name, Body::None); + self.constructors.insert(name.to_string(), Body::None); return; } _ => {} }; + self.constructors.insert(name.to_string(), Body::Internal(vec![])); + self.visit_data_type(&user_type.data_type); + let mut stmts = vec![]; + // TODO: call the user defined constructor here, don't know yet how we find it + // if let Some(user_defined_ctor_call) = self.get_user_defined_constructor_call(name, "self") { + // stmts.push(user_defined_ctor_call); + // } + + // Explicitly add the initializer call here + if let Some(initializer) = &user_type.initializer { + let assignment = create_assignment("self", None, initializer, self.id_provider.clone()); + stmts.push(assignment); + } + self.add_to_current_constructor(stmts); + self.context.exit_datatype(); + } + + fn visit_data_type(&mut self, data_type: &plc_ast::ast::DataType) { + // Only structs get constructors + if let plc_ast::ast::DataType::StructType { variables, .. } = data_type { + let name = data_type.get_name().expect("name is set at this stage").to_string(); - let mut constructor = vec![]; - if let plc_ast::ast::DataType::StructType { variables, .. } = &user_type.data_type { + let mut constructor = vec![]; for variable in variables.iter() { if let Some(initializer) = &variable.initializer { // Create an assignment "self. := " @@ -164,18 +197,13 @@ impl AstVisitor for Initializer<'_> { constructor.push(assignment); } } + self.add_to_current_constructor(constructor); } - // Insert the initializer as the assignment to self - if let Some(initializer) = &user_type.initializer { - let assignment = create_assignment("self", None, initializer, self.id_provider.clone()); - constructor.push(assignment); - } - self.constructors.insert(name.to_string(), Body::Internal(constructor)); } } -impl<'idx> Initializer<'idx> { - pub fn new(id_provider: IdProvider) -> Initializer<'idx> { +impl Initializer { + pub fn new(id_provider: IdProvider) -> Initializer { Initializer { id_provider, index: None, @@ -187,37 +215,39 @@ impl<'idx> Initializer<'idx> { } } - pub fn apply_initialization(&mut self, unit: &mut CompilationUnit, index: &'idx Index) { + pub fn apply_initialization( + &mut self, + units: Vec, + index: Index, + ) -> Vec { // Set the index self.index = Some(index); - // Visit the unit and prepare constructors - // Add each constructor function to the unit as a new function - // Add the construction calls for stack variables to each function - // Remove the index - self.index = None + for unit in units.iter() { + self.visit_compilation_unit(unit); + // Add each constructor function to the unit as a new function + // Add the construction calls for stack variables to each function + } + units } fn add_to_current_stack_constructor(&mut self, node: Vec) { if let Some(current_pou) = self.context.current_pou.as_ref() { - if let Some(body) = self.stack_constructor.get_mut(current_pou) { - match body { - Body::Internal(nodes) => nodes.extend(node), - _ => {} - } + if let Some(Body::Internal(nodes)) = self.stack_constructor.get_mut(current_pou) { + nodes.extend(node); } } } fn add_to_current_constructor(&mut self, node: Vec) { if let Some(current_struct) = - self.context.current_pou.as_ref().or_else(|| self.context.current_datatype.as_ref()) + self.context.current_pou.as_ref().or(self.context.current_datatype.as_ref()) { - if let Some(body) = self.constructors.get_mut(current_struct) { - match body { - Body::Internal(nodes) => nodes.extend(node), - _ => {} - } + if let Some(Body::Internal(nodes)) = self.constructors.get_mut(current_struct) { + nodes.extend(node) } + } else if self.context.current_variable_block.is_some_and(|it| it.is_global()) { + // Global constructor + self.global_constructor.extend(node); } } @@ -236,18 +266,34 @@ impl<'idx> Initializer<'idx> { } } - fn get_user_defined_constructor_call(&self, type_name: &str, var_name: &str) -> Option { - if let Some(index) = self.index { + fn get_user_defined_constructor_call(&mut self, type_name: &str, var_name: &str) -> Option { + //TODO: datatypes work differently if they support user defined init + if let Some(index) = self.index.as_ref() { // Search for the user defined constructor for the given struct - None - } else { - None + if let Some(user_defined_ctor_name) = self.user_defined_constructors.get(type_name) { + if let Some(pou) = index.find_method(type_name, user_defined_ctor_name) { + let op = create_member_reference( + &format!("{var_name}.{user_defined_ctor_name}"), + self.id_provider.clone(), + None, + ); + let call = AstFactory::create_call_statement( + op, + None, + self.id_provider.next_id(), + SourceLocation::internal(), + ); + return Some(call); + } + } } + None } } #[cfg(test)] mod tests { + use plc::lowering::vtable::VirtualTableGenerator; use plc_ast::{ast::AstNode, visitor::AstVisitor}; use plc_diagnostics::diagnostician::Diagnostician; use plc_driver::pipelines::{AnnotatedProject, BuildPipeline}; @@ -271,12 +317,17 @@ mod tests { let src: SourceCode = src.into(); let diagnostician = Diagnostician::buffered(); let mut pipeline = BuildPipeline::from_sources("test.st", vec![(src)], diagnostician).unwrap(); - let AnnotatedProject { units, .. } = pipeline.parse_and_annotate().unwrap(); + pipeline.register_mut_participants(vec![Box::new(VirtualTableGenerator::new( + pipeline.context.provider(), + ))]); + let AnnotatedProject { units, index, .. } = pipeline.parse_and_annotate().unwrap(); // Visit the AST with the Initializer let mut initializer = super::Initializer::new(pipeline.context.provider()); + initializer.index = Some(index); for unit in units { initializer.visit_compilation_unit(unit.get_unit()); } + initializer.index = None; initializer } @@ -408,8 +459,6 @@ mod tests { "#; let initializer = parse_and_init(src); - // Expecting a function declaration: void MyEnum_ctor(MyEnum* self) - // Expecting an assignment inside the constructor: *self = 2; insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyEnum").unwrap()), @"self := Option3"); // Expecting a function declaration: void MyStruct_ctor(MyStruct* self) // Expecting a call to MyEnum_ctor(&self->e); @@ -506,7 +555,7 @@ mod tests { let initializer = parse_and_init(src); // Check for global constructor // Expecting a call to MyStruct_ctor(&gStructVar); - insta::assert_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); + insta::assert_snapshot!(print_to_string(&initializer.global_constructor), @"self.gVar1 := 10"); } #[test] @@ -601,4 +650,70 @@ mod tests { // Check that no constructor is generated for MyExtStruct insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyExtStruct").unwrap()), @"extern"); } + + #[test] + fn function_block_fb_init_called_in_constructor() { + let src = r#" + FUNCTION_BLOCK MyFB + VAR + fbVar : INT; + END_VAR + METHOD FB_INIT : VOID + fbVar := 1; + END_METHOD + END_FUNCTION_BLOCK + "#; + let initializer = parse_and_init(src); + // Check for FB_INIT call in constructor + // Expecting a call to MyFB.FB_INIT(&self); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyFB").unwrap()), @"self.FB_INIT()"); + } + + #[test] + fn function_block_inheritance_chain_called_in_constructor() { + let src = r#" + FUNCTION_BLOCK MyBaseFB + VAR + baseVar : INT := 5; + END_VAR + METHOD baseMeth + END_METHOD + METHOD overrideMeth + END_METHOD + END_FUNCTION_BLOCK + FUNCTION_BLOCK MyFB EXTENDS MyBaseFB + VAR + fbVar : INT := 10; + END_VAR + METHOD FB_INIT : VOID + fbVar := 1; + END_METHOD + METHOD overrideMeth + END_METHOD + METHOD localMeth + END_METHOD + END_FUNCTION_BLOCK + "#; + let initializer = parse_and_init(src); + // Check that there's a constructor function for MyBaseFB + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyBaseFB").unwrap()), @"self.baseVar := 5"); + // Check that the constructor for MyFB calls the base FB constructor + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyFB").unwrap()), @r" + self.fbVar := 10 + self.FB_INIT() + "); + // Check that there's a constructor function for the vtables + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("__vtable_MyBaseFB").unwrap()), @r" + self.__body := ADR(MyBaseFB) + self.baseMeth := ADR(MyBaseFB.baseMeth) + self.overrideMeth := ADR(MyBaseFB.overrideMeth) + "); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("__vtable_MyFB").unwrap()), @r" + self.__body := ADR(MyFB) + self.baseMeth := ADR(MyBaseFB.baseMeth) + self.overrideMeth := ADR(MyFB.overrideMeth) + self.FB_INIT := ADR(MyFB.FB_INIT) + self.localMeth := ADR(MyFB.localMeth) + "); + } } diff --git a/src/validation/array.rs b/src/validation/array.rs index c33eaffea94..c49f3a83e3a 100644 --- a/src/validation/array.rs +++ b/src/validation/array.rs @@ -203,7 +203,7 @@ impl<'a> StatementWrapper<'a> { StatementWrapper::Variable(variable) => variable .data_type_declaration .get_referenced_type() - .and_then(|it| context.index.find_effective_type_info(&it)), + .and_then(|it| context.index.find_effective_type_info(it)), }?; match ty { diff --git a/src/validation/variable.rs b/src/validation/variable.rs index 820b79d23d7..b1f799e5bc6 100644 --- a/src/validation/variable.rs +++ b/src/validation/variable.rs @@ -126,7 +126,7 @@ pub fn visit_variable_block( visit_variable(validator, variable, context); if let Some(referenced_type) = variable.data_type_declaration.get_referenced_type() { - if context.index.get_type_information_or_void(&referenced_type).is_vla() { + if context.index.get_type_information_or_void(referenced_type).is_vla() { validate_vla(validator, pou, block, variable); } } From fecb8769355579de73c0fd3a4bed7adbfd722e62 Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Mon, 1 Dec 2025 07:43:23 +0100 Subject: [PATCH 17/18] wip: start generating constructor units --- .../plc_driver/src/pipelines/participant.rs | 12 +- compiler/plc_lowering/src/initializer.rs | 146 +++++++++++++----- src/lowering/helper.rs | 90 ++++++++++- 3 files changed, 204 insertions(+), 44 deletions(-) diff --git a/compiler/plc_driver/src/pipelines/participant.rs b/compiler/plc_driver/src/pipelines/participant.rs index e07386a87b1..12c4ce29653 100644 --- a/compiler/plc_driver/src/pipelines/participant.rs +++ b/compiler/plc_driver/src/pipelines/participant.rs @@ -8,6 +8,7 @@ use std::{ collections::HashMap, env, fs, path::{Path, PathBuf}, + rc::Rc, sync::{Arc, Mutex, RwLock}, }; @@ -244,10 +245,15 @@ impl PipelineParticipantMut for InitParticipant { fn pre_annotate(&mut self, indexed_project: IndexedProject) -> IndexedProject { // Create a new init lowerer let IndexedProject { project: ParsedProject { units }, index, .. } = indexed_project; - let mut initializer = Initializer::new(self.id_provider.clone()); - let units = initializer.apply_initialization(units, index); + let mut resulting_units = vec![]; + let index = Rc::new(index); + for unit in units { + let initializer = Initializer::new(self.id_provider.clone()); + let unit = initializer.apply_initialization(unit, index.clone()); + resulting_units.push(unit); + } // Append new units and constructor to the ast and re-index - let project = ParsedProject { units }; + let project = ParsedProject { units: resulting_units }; project.index(self.id_provider.clone()) } } diff --git a/compiler/plc_lowering/src/initializer.rs b/compiler/plc_lowering/src/initializer.rs index ad03c08076b..e10daa593be 100644 --- a/compiler/plc_lowering/src/initializer.rs +++ b/compiler/plc_lowering/src/initializer.rs @@ -20,12 +20,14 @@ //! - Built-in types and variables are not re-initialized in the global //! constructor. +use std::rc::Rc; + use plc::{ index::{FxIndexMap, Index}, - lowering::helper::{create_assignment, create_call_statement, create_member_reference}, + lowering::helper::{create_assignment, create_call_statement, create_member_reference, new_constructor}, }; use plc_ast::{ - ast::{AstFactory, AstNode, CompilationUnit, VariableBlockType}, + ast::{AstFactory, AstNode, CompilationUnit, LinkageType, VariableBlockType}, provider::IdProvider, visitor::{AstVisitor, Walker}, }; @@ -34,14 +36,14 @@ use plc_source::source_location::SourceLocation; #[derive(Debug, PartialEq)] enum Body { Internal(Vec), - External, + External(Vec), None, } #[derive(Debug)] pub struct Initializer { pub id_provider: IdProvider, - index: Option, + index: Option>, /// Stateful constructor per POU/struct constructors: FxIndexMap, /// User defined constructor names per POU/datatype @@ -81,25 +83,25 @@ impl Context { } } -//T -//ODO: might need to be a mutable ast visitor +//TODO: might need to be a mutable ast visitor impl AstVisitor for Initializer { fn visit_pou(&mut self, pou: &plc_ast::ast::Pou) { self.context.enter_pou(pou.name.as_str()); self.user_defined_constructors.insert(pou.name.clone(), "FB_INIT".to_string()); match pou.linkage { + plc_ast::ast::LinkageType::Internal => { + self.constructors.insert(pou.name.clone(), Body::Internal(vec![])); + self.stack_constructor.insert(pou.name.clone(), Body::Internal(vec![])); + } plc_ast::ast::LinkageType::External => { - self.constructors.insert(pou.name.clone(), Body::External); - return; + self.constructors.insert(pou.name.clone(), Body::External(vec![])); + self.stack_constructor.insert(pou.name.clone(), Body::External(vec![])); } plc_ast::ast::LinkageType::BuiltIn => { self.constructors.insert(pou.name.clone(), Body::None); return; } - _ => {} }; - self.constructors.insert(pou.name.clone(), Body::Internal(vec![])); - self.stack_constructor.insert(pou.name.clone(), Body::Internal(vec![])); pou.walk(self); // call the user defined constructor here if let Some(user_defined_ctor_call) = self.get_user_defined_constructor_call(&pou.name, "self") { @@ -152,17 +154,17 @@ impl AstVisitor for Initializer { let name = user_type.data_type.get_name().expect("name is set at this stage"); self.context.enter_datatype(name); match user_type.linkage { + plc_ast::ast::LinkageType::Internal => { + self.constructors.insert(name.to_string(), Body::Internal(vec![])); + } plc_ast::ast::LinkageType::External => { - self.constructors.insert(name.to_string(), Body::External); - return; + self.constructors.insert(name.to_string(), Body::External(vec![])); } plc_ast::ast::LinkageType::BuiltIn => { self.constructors.insert(name.to_string(), Body::None); return; } - _ => {} }; - self.constructors.insert(name.to_string(), Body::Internal(vec![])); self.visit_data_type(&user_type.data_type); let mut stmts = vec![]; // TODO: call the user defined constructor here, don't know yet how we find it @@ -182,8 +184,6 @@ impl AstVisitor for Initializer { fn visit_data_type(&mut self, data_type: &plc_ast::ast::DataType) { // Only structs get constructors if let plc_ast::ast::DataType::StructType { variables, .. } = data_type { - let name = data_type.get_name().expect("name is set at this stage").to_string(); - let mut constructor = vec![]; for variable in variables.iter() { if let Some(initializer) = &variable.initializer { @@ -215,24 +215,38 @@ impl Initializer { } } - pub fn apply_initialization( - &mut self, - units: Vec, - index: Index, - ) -> Vec { + pub fn apply_initialization(mut self, mut unit: CompilationUnit, index: Rc) -> CompilationUnit { // Set the index self.index = Some(index); - for unit in units.iter() { - self.visit_compilation_unit(unit); - // Add each constructor function to the unit as a new function - // Add the construction calls for stack variables to each function + self.visit_compilation_unit(&unit); + // Add each constructor function to the unit as a new function + for (name, body) in self.constructors { + match body { + Body::Internal(nodes) => { + let (pou, implementation) = + new_constructor(&name, LinkageType::Internal, nodes, self.id_provider.clone()); + unit.pous.push(pou); + unit.implementations.push(implementation); + } + Body::External(nodes) => { + let (pou, implementation) = + new_constructor(&name, LinkageType::External, nodes, self.id_provider.clone()); + unit.pous.push(pou); + unit.implementations.push(implementation); + } + Body::None => {} + } } - units + // Add the construction calls for stack variables to each function + // Add a global constructor function with the global constructor calls + unit } fn add_to_current_stack_constructor(&mut self, node: Vec) { if let Some(current_pou) = self.context.current_pou.as_ref() { - if let Some(Body::Internal(nodes)) = self.stack_constructor.get_mut(current_pou) { + if let Some(Body::Internal(nodes) | Body::External(nodes)) = + self.stack_constructor.get_mut(current_pou) + { nodes.extend(node); } } @@ -242,7 +256,9 @@ impl Initializer { if let Some(current_struct) = self.context.current_pou.as_ref().or(self.context.current_datatype.as_ref()) { - if let Some(Body::Internal(nodes)) = self.constructors.get_mut(current_struct) { + if let Some(Body::Internal(nodes) | Body::External(nodes)) = + self.constructors.get_mut(current_struct) + { nodes.extend(node) } } else if self.context.current_variable_block.is_some_and(|it| it.is_global()) { @@ -293,6 +309,8 @@ impl Initializer { #[cfg(test)] mod tests { + use std::rc::Rc; + use plc::lowering::vtable::VirtualTableGenerator; use plc_ast::{ast::AstNode, visitor::AstVisitor}; use plc_diagnostics::diagnostician::Diagnostician; @@ -307,8 +325,28 @@ mod tests { fn print_body_to_string(body: &super::Body) -> String { match body { - super::Body::Internal(nodes) => print_to_string(nodes), - super::Body::External => "extern".to_string(), + super::Body::Internal(nodes) => { + if nodes.is_empty() { + "".into() + } else { + format!( + r"intern: +{}", + print_to_string(nodes) + ) + } + } + super::Body::External(nodes) => { + if nodes.is_empty() { + "".into() + } else { + format!( + r"extern: +{}", + print_to_string(nodes) + ) + } + } super::Body::None => "none".to_string(), } } @@ -323,7 +361,7 @@ mod tests { let AnnotatedProject { units, index, .. } = pipeline.parse_and_annotate().unwrap(); // Visit the AST with the Initializer let mut initializer = super::Initializer::new(pipeline.context.provider()); - initializer.index = Some(index); + initializer.index = Some(Rc::new(index)); for unit in units { initializer.visit_compilation_unit(unit.get_unit()); } @@ -346,6 +384,7 @@ mod tests { // Expecting a function declaration: void MyStruct_ctor(MyStruct* self) // Expecting assignments inside the constructor: self->a = 5; self->b = 3.14; self->c = 1; insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r" + intern: self.a := 5 self.b := 3.14 self.c := TRUE @@ -373,13 +412,17 @@ mod tests { // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) // Expecting assignments inside the constructor: self->x = 10; self->y = 20; insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r" + intern: self.x := 10 self.y := 20 "); // Expecting a function declaration: void OuterStruct_ctor(OuterStruct* self) // Expecting a call to InnerStruct_ctor(&self->inner); // Expecting an assignment: self->z = 2.71; - insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @"self.z := 2.71"); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @r" + intern: + self.z := 2.71 + "); } #[test] @@ -404,6 +447,7 @@ mod tests { // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) // Expecting assignments inside the constructor: self->x = 10; self->y = 20; insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r" + intern: self.x := 10 self.y := 20 "); @@ -414,6 +458,7 @@ mod tests { // Expecting assignments: self->inner2.y = 3; // Expecting an assignment: self->z = 2.71; insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @r" + intern: self.inner := (x := 1, y := 2) self.inner2 := (y := 3) self.z := 2.71 @@ -441,6 +486,7 @@ mod tests { // Expecting assignments inside the constructor: self->a = 5; self->c = 1; // Expecting an assignment: self->b = &gVar; insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r" + intern: self.a := 5 self.b := ADR(gVar) self.c := TRUE @@ -459,12 +505,16 @@ mod tests { "#; let initializer = parse_and_init(src); - insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyEnum").unwrap()), @"self := Option3"); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyEnum").unwrap()), @r" + intern: + self := Option3 + "); // Expecting a function declaration: void MyStruct_ctor(MyStruct* self) // Expecting a call to MyEnum_ctor(&self->e); // Expecting an assignment: self->e = 1; // Expecting an assignment: self->n = 42; insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyStruct").unwrap()), @r" + intern: self.e := Option2 self.n := 42 "); @@ -505,6 +555,7 @@ mod tests { // Expecting a function declaration: void InnerStruct_ctor(InnerStruct* self) // Expecting assignments inside the constructor: self->a = 1; self->b = &gVar; insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct").unwrap()), @r" + intern: self.a := 1 self.b := ADR(gVar) "); @@ -514,6 +565,7 @@ mod tests { // Expecting assignments: self->c = 4; self->d = 5; // Expecting assignments: self->inner.a = 6; self->inner2.b = &gvar; insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("InnerStruct2").unwrap()), @r" + intern: self.c := 4 self.d := 5 self.inner := (a := 6) @@ -528,6 +580,7 @@ mod tests { // Expecting assignments: self->inner2.d = 8; self->inner2.inner.b = &gVar; // Expecting assignments: self->inner3.inner.a = 9; insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("OuterStruct").unwrap()), @r" + intern: self.e := 0 self.inner := (a := 1, b := 2, inner := (a := 3)) self.inner2 := (d := 8, inner := (b := ADR(gVar))) @@ -577,7 +630,7 @@ mod tests { let initializer = parse_and_init(src); // Check for function constructor on the stack // Expecting a call to MyStruct_ctor(&localStruct); - insta::assert_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyFunction").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyFunction").unwrap()), @""); } #[test] @@ -602,9 +655,9 @@ mod tests { let initializer = parse_and_init(src); // Check for program constructor on the stack // Expecting a call to MyStruct_ctor(&localStruct); - insta::assert_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyProgram").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.stack_constructor.get("MyProgram").unwrap()), @""); // Check for program constructor - insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyProgram").unwrap()), @r#""#); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyProgram").unwrap()), @""); } #[test] @@ -648,7 +701,11 @@ mod tests { // No call to MyExtStruct_ctor(&extVar); insta::assert_snapshot!(print_to_string(&initializer.global_constructor), @r#""#); // Check that no constructor is generated for MyExtStruct - insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyExtStruct").unwrap()), @"extern"); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyExtStruct").unwrap()), @r" + extern: + self.a := 5 + self.b := TRUE + "); } #[test] @@ -666,7 +723,10 @@ mod tests { let initializer = parse_and_init(src); // Check for FB_INIT call in constructor // Expecting a call to MyFB.FB_INIT(&self); - insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyFB").unwrap()), @"self.FB_INIT()"); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyFB").unwrap()), @r" + intern: + self.FB_INIT() + "); } #[test] @@ -696,19 +756,25 @@ mod tests { "#; let initializer = parse_and_init(src); // Check that there's a constructor function for MyBaseFB - insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyBaseFB").unwrap()), @"self.baseVar := 5"); + insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyBaseFB").unwrap()), @r" + intern: + self.baseVar := 5 + "); // Check that the constructor for MyFB calls the base FB constructor insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("MyFB").unwrap()), @r" + intern: self.fbVar := 10 self.FB_INIT() "); // Check that there's a constructor function for the vtables insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("__vtable_MyBaseFB").unwrap()), @r" + intern: self.__body := ADR(MyBaseFB) self.baseMeth := ADR(MyBaseFB.baseMeth) self.overrideMeth := ADR(MyBaseFB.overrideMeth) "); insta::assert_snapshot!(print_body_to_string(initializer.constructors.get("__vtable_MyFB").unwrap()), @r" + intern: self.__body := ADR(MyFB) self.baseMeth := ADR(MyBaseFB.baseMeth) self.overrideMeth := ADR(MyFB.overrideMeth) diff --git a/src/lowering/helper.rs b/src/lowering/helper.rs index f7fa3ee2416..68d099fb57e 100644 --- a/src/lowering/helper.rs +++ b/src/lowering/helper.rs @@ -1,5 +1,8 @@ use plc_ast::{ - ast::{Assignment, AstFactory, AstNode, AstStatement, ReferenceExpr}, + ast::{ + Assignment, AstFactory, AstId, AstNode, AstStatement, DataTypeDeclaration, Implementation, + LinkageType, Pou, PouType, ReferenceExpr, Variable, VariableBlock, + }, provider::IdProvider, }; use plc_source::source_location::SourceLocation; @@ -168,3 +171,88 @@ pub fn create_call_statement( ); AstFactory::create_call_statement(op, Some(param), id_provider.next_id(), location.clone()) } + +pub fn new_constructor( + base_name: &str, + linkage: LinkageType, + statements: Vec, + mut id_provider: IdProvider, +) -> (Pou, Implementation) { + let ctor_name = format!("{base_name}_ctor"); + // Create a VAR_IN_OUT block with self as parameter + let self_block = VariableBlock::default() + .with_block_type(plc_ast::ast::VariableBlockType::InOut) + .with_variables(vec![new_variable("self", base_name)]); + let pou = new_pou( + &ctor_name, + id_provider.next_id(), + vec![self_block], + PouType::Init, + linkage, + &SourceLocation::internal(), + ); + let implementation = + new_implementation(&ctor_name, statements, PouType::Init, linkage, SourceLocation::internal()); + (pou, implementation) +} + +pub fn new_variable(name: &str, data_type_name: &str) -> Variable { + Variable { + name: name.into(), + data_type_declaration: DataTypeDeclaration::Reference { + referenced_type: data_type_name.into(), + location: SourceLocation::internal(), + }, + initializer: None, + address: None, + location: SourceLocation::internal(), + } +} + +pub fn new_pou( + name: &str, + id: AstId, + variable_blocks: Vec, + kind: PouType, + linkage: LinkageType, + location: &SourceLocation, +) -> Pou { + Pou { + name: name.into(), + id, + variable_blocks, + kind, + return_type: None, + location: location.clone(), + name_location: location.to_owned(), + poly_mode: None, + generics: vec![], + linkage, + super_class: None, + interfaces: vec![], + properties: vec![], + is_const: false, + } +} + +pub fn new_implementation( + name: &str, + statements: Vec, + pou_type: PouType, + linkage: LinkageType, + location: SourceLocation, +) -> Implementation { + Implementation { + name: name.into(), + type_name: name.into(), + linkage, + pou_type, + statements, + location: location.clone(), + name_location: location.clone(), + end_location: location, + overriding: false, + generic: false, + access: None, + } +} From 236a2eed9d52fe9ddd86db3d3368618c6d7f627f Mon Sep 17 00:00:00 2001 From: Ghaith Hachem Date: Wed, 10 Dec 2025 08:15:18 +0100 Subject: [PATCH 18/18] wip: add a todo, start working on global constructor and stack constructors --- TODO.md | 167 +++++++++++++++++++++++ compiler/plc_ast/src/ast.rs | 8 ++ compiler/plc_lowering/src/initializer.rs | 42 +++++- src/lowering/helper.rs | 39 +++++- 4 files changed, 251 insertions(+), 5 deletions(-) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 00000000000..216e80f3b65 --- /dev/null +++ b/TODO.md @@ -0,0 +1,167 @@ +# Initializer Implementation Status + +## Overview + +The goal is for each datatype/POU to get a constructor (`_ctor`), and then a global constructor is created with calls to all constructors in the unit. + +## Current Implementation + +### What's Already Created (in `plc_lowering/src/initializer.rs`) + +#### 1. Per-Type Constructors (`_ctor`) +- [x] Collects constructor body statements for each POU and struct +- [x] Tracks `Body::Internal`, `Body::External`, or `Body::None` per type +- [x] Generates assignment statements (`self.field := value`) for variables with initializers +- [x] Handles nested struct initializers +- [x] Generates call to user-defined `FB_INIT` method if present +- [x] Creates the constructor POU and Implementation AST nodes via `new_constructor()` +- [x] Adds constructors to the CompilationUnit + +#### 2. Stack Constructors (for temp/local variables in stateless POUs) +- [x] Tracks per-POU (`stack_constructor` map) +- [ ] **NOT YET APPLIED** to function bodies + +#### 3. Global Constructor Statements +- [x] Collects statements for global variables into `global_constructor` Vec +- [ ] **NOT YET GENERATED** as a function + +--- + +## What's Missing + +### 1. Global Constructor Function (`__global_ctor`) + +The `global_constructor` Vec collects statements but no function is created. + +**Need to generate a `__global_ctor` POU that:** +- Calls each type's `_ctor` for global instances +- Contains the collected `global_constructor` assignment statements +- Is marked for static initialization (via `.init_array` / LLVM global constructors) + +**Location:** `compiler/plc_lowering/src/initializer.rs` - `apply_initialization()` method (around line 240) + +### 2. Stack Constructor Integration + +The `stack_constructor` map collects statements for temp/local vars but they are not applied. + +**Need to:** +- Prepend `stack_constructor[pou_name]` statements to each function's implementation body + +**Location:** `compiler/plc_lowering/src/initializer.rs` - `apply_initialization()` method (around line 240) + +### 3. Constructor Call Chain + +When a struct member is of a struct type, the constructor should call the member's constructor before applying field overrides. + +**Current behavior:** Tries to add constructor call (lines 134-139) but may not be matching correctly for all cases. + +**Need to verify:** +- Constructor calls are generated for nested struct members +- Order is correct: first call nested constructor, then apply overrides + +### 4. Features from Old Implementation Not Yet Ported + +Comparing old `InitVisitor` (in `src/lowering/init_visitor.rs` + `src/lowering/initializers.rs`) vs new `Initializer`: + +| Feature | Old (`InitVisitor`) | New (`Initializer`) | +|---------|---------------------|---------------------| +| Type constructors (`__init_`) | Done | Done (`_ctor`) | +| User init functions (`__user_init_`) | Done | Missing | +| Global wrapper (`__init___`) | Done | Missing | +| VAR_CONFIG init | Done | Missing | +| VTable init in constructor | Done | Missing | +| Stack var init in functions | Done | Collected but not applied | +| External linkage handling | Done | Done | + +--- + +## Implementation Plan + +### Step 1: Generate Global Constructor + +In `apply_initialization()`, after adding all type constructors: + +```rust +// Create __global_ctor function +if !self.global_constructor.is_empty() { + let mut global_ctor_body = vec![]; + + // Add calls to constructors for global struct instances + for (var_name, var_type) in global_struct_instances { + if self.constructors.contains_key(&var_type) { + let call = create_call_statement( + &format!("{}_ctor", var_type), + var_name, + None, + self.id_provider.clone(), + &SourceLocation::internal(), + ); + global_ctor_body.push(call); + } + } + + // Add collected assignment statements + global_ctor_body.extend(self.global_constructor); + + // Create the POU and implementation + let (pou, impl) = new_global_constructor("__global_ctor", global_ctor_body, ...); + unit.pous.push(pou); + unit.implementations.push(impl); +} +``` + +### Step 2: Apply Stack Constructors + +Modify function implementations to include stack initialization: + +```rust +// For each implementation in unit.implementations +for impl in &mut unit.implementations { + if let Some(Body::Internal(stmts)) = self.stack_constructor.get(&impl.name) { + // Prepend stack constructor statements to the implementation body + let mut new_body = stmts.clone(); + new_body.extend(impl.statements.drain(..)); + impl.statements = new_body; + } +} +``` + +### Step 3: Ensure Constructor Call Chain + +In `visit_variable()`, verify that for struct-typed variables: +1. First, call the struct's constructor: `_ctor(self.var_name)` +2. Then, apply any field overrides from the initializer + +### Step 4: Port Remaining Features + +1. **VTable initialization:** Add `self.__vtable := ADR(__vtable__instance)` to constructor body for classes/FBs +2. **User init functions:** Generate `__user_init_` that calls `FB_INIT` if present +3. **VAR_CONFIG init:** Handle VAR_CONFIG initialization in global constructor + +--- + +## Files to Modify + +- `compiler/plc_lowering/src/initializer.rs` - Main implementation +- `src/lowering/helper.rs` - May need additional helper functions +- `compiler/plc_driver/src/pipelines/participant.rs` - InitParticipant integration + +## Testing + +Existing tests in `compiler/plc_lowering/src/initializer.rs` cover: +- Struct constructors +- Nested structs +- Pointer initializers +- Enum defaults +- Global constructor collection +- Function/program constructors +- External types +- FB_INIT calls +- Inheritance chains + +Additional tests needed: +- [ ] Global constructor function generation +- [ ] Stack constructor application to function bodies +- [ ] Constructor call chain for nested structs +- [ ] VTable initialization +- [ ] Integration with codegen (actual LLVM output) diff --git a/compiler/plc_ast/src/ast.rs b/compiler/plc_ast/src/ast.rs index fcdf56f2579..dc5d75eba0f 100644 --- a/compiler/plc_ast/src/ast.rs +++ b/compiler/plc_ast/src/ast.rs @@ -308,6 +308,14 @@ impl Pou { pub fn is_built_in(&self) -> bool { matches!(self.linkage, LinkageType::BuiltIn) } + + pub fn is_function_block(&self) -> bool { + matches!(self.kind, PouType::FunctionBlock) + } + + pub fn is_class(&self) -> bool { + matches!(self.kind, PouType::Class) + } } #[derive(Debug, PartialEq)] diff --git a/compiler/plc_lowering/src/initializer.rs b/compiler/plc_lowering/src/initializer.rs index e10daa593be..7a3b780cb77 100644 --- a/compiler/plc_lowering/src/initializer.rs +++ b/compiler/plc_lowering/src/initializer.rs @@ -20,11 +20,14 @@ //! - Built-in types and variables are not re-initialized in the global //! constructor. -use std::rc::Rc; +use std::{any::Any, rc::Rc}; use plc::{ index::{FxIndexMap, Index}, - lowering::helper::{create_assignment, create_call_statement, create_member_reference, new_constructor}, + lowering::helper::{ + create_assignment, create_call_statement, create_member_reference, get_unit_name, new_constructor, + new_unit_constructor, + }, }; use plc_ast::{ ast::{AstFactory, AstNode, CompilationUnit, LinkageType, VariableBlockType}, @@ -102,6 +105,20 @@ impl AstVisitor for Initializer { return; } }; + // If the POU is a function block or a class, add an assignment to the vtable + if pou.is_function_block() || pou.is_class() { + let vtable_assignment = create_assignment( + "self.__vtable", + None, + &create_member_reference( + &format!("ADR(__vtable_{}_instance)", pou.name), + self.id_provider.clone(), + None, + ), + self.id_provider.clone(), + ); + self.add_to_current_constructor(vec![vtable_assignment]); + } pou.walk(self); // call the user defined constructor here if let Some(user_defined_ctor_call) = self.get_user_defined_constructor_call(&pou.name, "self") { @@ -238,7 +255,28 @@ impl Initializer { } } // Add the construction calls for stack variables to each function + for (name, elements) in self.stack_constructor.into_iter() { + if let Some(implementation) = unit.implementations.iter_mut().find(|it| it.name.as_str() == name) + { + match elements { + Body::Internal(nodes) => { + implementation.statements.splice(0..0, nodes); + } + Body::External(nodes) => { + implementation.statements.splice(0..0, nodes); + } + Body::None => {} + } + } + } // Add a global constructor function with the global constructor calls + if !self.global_constructor.is_empty() { + let unit_name = get_unit_name(&unit); + let (pou, implementation) = + new_unit_constructor(&unit_name, self.global_constructor, self.id_provider.clone()); + unit.pous.push(pou); + unit.implementations.push(implementation); + } unit } diff --git a/src/lowering/helper.rs b/src/lowering/helper.rs index 68d099fb57e..328e7adf9e6 100644 --- a/src/lowering/helper.rs +++ b/src/lowering/helper.rs @@ -1,11 +1,13 @@ +use std::path::PathBuf; + use plc_ast::{ ast::{ - Assignment, AstFactory, AstId, AstNode, AstStatement, DataTypeDeclaration, Implementation, - LinkageType, Pou, PouType, ReferenceExpr, Variable, VariableBlock, + Assignment, AstFactory, AstId, AstNode, AstStatement, CompilationUnit, DataTypeDeclaration, + Implementation, LinkageType, Pou, PouType, ReferenceExpr, Variable, VariableBlock, }, provider::IdProvider, }; -use plc_source::source_location::SourceLocation; +use plc_source::source_location::{FileMarker, SourceLocation}; #[derive(Clone, Default)] pub struct Context { @@ -196,6 +198,30 @@ pub fn new_constructor( (pou, implementation) } +pub fn new_unit_constructor( + unit_name: &str, + statements: Vec, + mut id_provider: IdProvider, +) -> (Pou, Implementation) { + let ctor_name = format!("__{unit_name}_ctor"); + let pou = new_pou( + &ctor_name, + id_provider.next_id(), + vec![], + PouType::ProjectInit, + LinkageType::External, + &SourceLocation::internal(), + ); + let implementation = new_implementation( + &ctor_name, + statements, + PouType::Init, + LinkageType::Internal, + SourceLocation::internal(), + ); + (pou, implementation) +} + pub fn new_variable(name: &str, data_type_name: &str) -> Variable { Variable { name: name.into(), @@ -256,3 +282,10 @@ pub fn new_implementation( access: None, } } + +/// Returns a sanitized unit name suitable for use as an identifier (e.g. in generated code) +pub fn get_unit_name(unit: &CompilationUnit) -> String { + let path: PathBuf = (&unit.file).into(); + let name = path.file_name().map(|it| it.to_string_lossy()).unwrap_or_default(); + name.replace('*', "_") +}