aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/llvm.zig
diff options
context:
space:
mode:
authorantlilja <liljaanton2001@gmail.com>2024-09-01 14:43:30 +0200
committerantlilja <liljaanton2001@gmail.com>2024-09-01 14:43:30 +0200
commit76908da3ac2f4ba64a80d6618211e7390995c00e (patch)
tree8ead7b3d0f0e20405edb40f0127c8848e070f867 /src/codegen/llvm.zig
parent7cb87c14fe593b60b7034f12d2efd927309a0b96 (diff)
downloadzig-76908da3ac2f4ba64a80d6618211e7390995c00e.tar.gz
zig-76908da3ac2f4ba64a80d6618211e7390995c00e.zip
LLVM: Set module flag behaviors to match what LLVM and clang does
Diffstat (limited to 'src/codegen/llvm.zig')
-rw-r--r--src/codegen/llvm.zig13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index 14571b9d8f..222845d32e 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -1102,12 +1102,15 @@ pub const Object = struct {
var module_flags = try std.ArrayList(Builder.Metadata).initCapacity(o.gpa, 6);
defer module_flags.deinit();
+ const behavior_error = try o.builder.metadataConstant(try o.builder.intConst(.i32, 1));
const behavior_warning = try o.builder.metadataConstant(try o.builder.intConst(.i32, 2));
+ const behavior_max = try o.builder.metadataConstant(try o.builder.intConst(.i32, 7));
+ const behavior_min = try o.builder.metadataConstant(try o.builder.intConst(.i32, 8));
const large_pic = target_util.usesLargePIC(comp.root_mod.resolved_target.result);
if (comp.root_mod.pic) {
module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
- behavior_warning,
+ behavior_min,
try o.builder.metadataString("PIC Level"),
try o.builder.metadataConstant(try o.builder.intConst(.i32, @as(i32, if (large_pic) 2 else 1))),
));
@@ -1115,7 +1118,7 @@ pub const Object = struct {
if (comp.config.pie) {
module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
- behavior_warning,
+ behavior_max,
try o.builder.metadataString("PIE Level"),
try o.builder.metadataConstant(try o.builder.intConst(.i32, @as(i32, if (large_pic) 2 else 1))),
));
@@ -1123,7 +1126,7 @@ pub const Object = struct {
if (comp.root_mod.code_model != .default) {
module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
- behavior_warning,
+ behavior_error,
try o.builder.metadataString("Code Model"),
try o.builder.metadataConstant(try o.builder.intConst(.i32, @as(i32, switch (comp.root_mod.code_model) {
.tiny => 0,
@@ -1147,14 +1150,14 @@ pub const Object = struct {
.strip => unreachable,
.dwarf => |f| {
module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
- behavior_warning,
+ behavior_max,
try o.builder.metadataString("Dwarf Version"),
try o.builder.metadataConstant(try o.builder.intConst(.i32, 4)),
));
if (f == .@"64") {
module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
- behavior_warning,
+ behavior_max,
try o.builder.metadataString("DWARF64"),
try o.builder.metadataConstant(.@"1"),
));