Skip to content

Commit ad7ea8b

Browse files
committed
Update powerpc data layouts
Function pointer alignment is specified since https://reviews.llvm.org/D147016.
1 parent 055dd28 commit ad7ea8b

18 files changed

+28
-17
lines changed

compiler/rustc_codegen_llvm/src/context.rs

+11
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,17 @@ pub unsafe fn create_module<'ll>(
145145
target_data_layout = target_data_layout.replace("-n32:64-", "-n64-");
146146
}
147147
}
148+
if llvm_version < (17, 0, 0) {
149+
if sess.target.arch.starts_with("powerpc") {
150+
// LLVM 17 specifies function pointer alignment for ppc:
151+
// https://reviews.llvm.org/D147016
152+
target_data_layout = target_data_layout
153+
.replace("-Fn32", "")
154+
.replace("-Fi32", "")
155+
.replace("-Fn64", "")
156+
.replace("-Fi64", "");
157+
}
158+
}
148159

149160
// Ensure the data-layout values hardcoded remain the defaults.
150161
if sess.target.is_builtin {

compiler/rustc_target/src/spec/powerpc64_ibm_aix.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub fn target() -> Target {
1111
Target {
1212
llvm_target: "powerpc64-ibm-aix".into(),
1313
pointer_width: 64,
14-
data_layout: "E-m:a-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
14+
data_layout: "E-m:a-Fi64-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
1515
arch: "powerpc64".into(),
1616
options: base,
1717
}

compiler/rustc_target/src/spec/powerpc64_unknown_freebsd.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub fn target() -> Target {
1111
Target {
1212
llvm_target: "powerpc64-unknown-freebsd".into(),
1313
pointer_width: 64,
14-
data_layout: "E-m:e-i64:64-n32:64".into(),
14+
data_layout: "E-m:e-Fn32-i64:64-n32:64".into(),
1515
arch: "powerpc64".into(),
1616
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".into(), ..base },
1717
}

compiler/rustc_target/src/spec/powerpc64_unknown_linux_gnu.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub fn target() -> Target {
1111
Target {
1212
llvm_target: "powerpc64-unknown-linux-gnu".into(),
1313
pointer_width: 64,
14-
data_layout: "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
14+
data_layout: "E-m:e-Fi64-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
1515
arch: "powerpc64".into(),
1616
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".into(), ..base },
1717
}

compiler/rustc_target/src/spec/powerpc64_unknown_linux_musl.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub fn target() -> Target {
1111
Target {
1212
llvm_target: "powerpc64-unknown-linux-musl".into(),
1313
pointer_width: 64,
14-
data_layout: "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
14+
data_layout: "E-m:e-Fi64-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
1515
arch: "powerpc64".into(),
1616
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".into(), ..base },
1717
}

compiler/rustc_target/src/spec/powerpc64_unknown_openbsd.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub fn target() -> Target {
1111
Target {
1212
llvm_target: "powerpc64-unknown-openbsd".into(),
1313
pointer_width: 64,
14-
data_layout: "E-m:e-i64:64-n32:64".into(),
14+
data_layout: "E-m:e-Fn32-i64:64-n32:64".into(),
1515
arch: "powerpc64".into(),
1616
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".into(), ..base },
1717
}

compiler/rustc_target/src/spec/powerpc64_wrs_vxworks.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ pub fn target() -> Target {
1111
Target {
1212
llvm_target: "powerpc64-unknown-linux-gnu".into(),
1313
pointer_width: 64,
14-
data_layout: "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
14+
data_layout: "E-m:e-Fi64-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
1515
arch: "powerpc64".into(),
1616
options: TargetOptions { endian: Endian::Big, ..base },
1717
}

compiler/rustc_target/src/spec/powerpc64le_unknown_freebsd.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub fn target() -> Target {
1010
Target {
1111
llvm_target: "powerpc64le-unknown-freebsd".into(),
1212
pointer_width: 64,
13-
data_layout: "e-m:e-i64:64-n32:64".into(),
13+
data_layout: "e-m:e-Fn32-i64:64-n32:64".into(),
1414
arch: "powerpc64".into(),
1515
options: TargetOptions { mcount: "_mcount".into(), ..base },
1616
}

compiler/rustc_target/src/spec/powerpc64le_unknown_linux_gnu.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub fn target() -> Target {
1010
Target {
1111
llvm_target: "powerpc64le-unknown-linux-gnu".into(),
1212
pointer_width: 64,
13-
data_layout: "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
13+
data_layout: "e-m:e-Fn32-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
1414
arch: "powerpc64".into(),
1515
options: TargetOptions { mcount: "_mcount".into(), ..base },
1616
}

compiler/rustc_target/src/spec/powerpc64le_unknown_linux_musl.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub fn target() -> Target {
1010
Target {
1111
llvm_target: "powerpc64le-unknown-linux-musl".into(),
1212
pointer_width: 64,
13-
data_layout: "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
13+
data_layout: "e-m:e-Fn32-i64:64-n32:64-S128-v256:256:256-v512:512:512".into(),
1414
arch: "powerpc64".into(),
1515
options: TargetOptions { mcount: "_mcount".into(), ..base },
1616
}

compiler/rustc_target/src/spec/powerpc_unknown_freebsd.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub fn target() -> Target {
1414
Target {
1515
llvm_target: "powerpc-unknown-freebsd13.0".into(),
1616
pointer_width: 32,
17-
data_layout: "E-m:e-p:32:32-i64:64-n32".into(),
17+
data_layout: "E-m:e-p:32:32-Fn32-i64:64-n32".into(),
1818
arch: "powerpc".into(),
1919
options: TargetOptions {
2020
endian: Endian::Big,

compiler/rustc_target/src/spec/powerpc_unknown_linux_gnu.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub fn target() -> Target {
1010
Target {
1111
llvm_target: "powerpc-unknown-linux-gnu".into(),
1212
pointer_width: 32,
13-
data_layout: "E-m:e-p:32:32-i64:64-n32".into(),
13+
data_layout: "E-m:e-p:32:32-Fn32-i64:64-n32".into(),
1414
arch: "powerpc".into(),
1515
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".into(), ..base },
1616
}

compiler/rustc_target/src/spec/powerpc_unknown_linux_gnuspe.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub fn target() -> Target {
1010
Target {
1111
llvm_target: "powerpc-unknown-linux-gnuspe".into(),
1212
pointer_width: 32,
13-
data_layout: "E-m:e-p:32:32-i64:64-n32".into(),
13+
data_layout: "E-m:e-p:32:32-Fn32-i64:64-n32".into(),
1414
arch: "powerpc".into(),
1515
options: TargetOptions {
1616
abi: "spe".into(),

compiler/rustc_target/src/spec/powerpc_unknown_linux_musl.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub fn target() -> Target {
1010
Target {
1111
llvm_target: "powerpc-unknown-linux-musl".into(),
1212
pointer_width: 32,
13-
data_layout: "E-m:e-p:32:32-i64:64-n32".into(),
13+
data_layout: "E-m:e-p:32:32-Fn32-i64:64-n32".into(),
1414
arch: "powerpc".into(),
1515
options: TargetOptions { endian: Endian::Big, mcount: "_mcount".into(), ..base },
1616
}

compiler/rustc_target/src/spec/powerpc_unknown_netbsd.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub fn target() -> Target {
1010
Target {
1111
llvm_target: "powerpc-unknown-netbsd".into(),
1212
pointer_width: 32,
13-
data_layout: "E-m:e-p:32:32-i64:64-n32".into(),
13+
data_layout: "E-m:e-p:32:32-Fn32-i64:64-n32".into(),
1414
arch: "powerpc".into(),
1515
options: TargetOptions { endian: Endian::Big, mcount: "__mcount".into(), ..base },
1616
}

compiler/rustc_target/src/spec/powerpc_unknown_openbsd.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub fn target() -> Target {
1010
Target {
1111
llvm_target: "powerpc-unknown-openbsd".into(),
1212
pointer_width: 32,
13-
data_layout: "E-m:e-p:32:32-i64:64-n32".into(),
13+
data_layout: "E-m:e-p:32:32-Fn32-i64:64-n32".into(),
1414
arch: "powerpc".into(),
1515
options: base,
1616
}

compiler/rustc_target/src/spec/powerpc_wrs_vxworks.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub fn target() -> Target {
1010
Target {
1111
llvm_target: "powerpc-unknown-linux-gnu".into(),
1212
pointer_width: 32,
13-
data_layout: "E-m:e-p:32:32-i64:64-n32".into(),
13+
data_layout: "E-m:e-p:32:32-Fn32-i64:64-n32".into(),
1414
arch: "powerpc".into(),
1515
options: TargetOptions { endian: Endian::Big, features: "+secure-plt".into(), ..base },
1616
}

compiler/rustc_target/src/spec/powerpc_wrs_vxworks_spe.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub fn target() -> Target {
1010
Target {
1111
llvm_target: "powerpc-unknown-linux-gnuspe".into(),
1212
pointer_width: 32,
13-
data_layout: "E-m:e-p:32:32-i64:64-n32".into(),
13+
data_layout: "E-m:e-p:32:32-Fn32-i64:64-n32".into(),
1414
arch: "powerpc".into(),
1515
options: TargetOptions {
1616
abi: "spe".into(),

0 commit comments

Comments
 (0)