authorgravatar for liljaanton2001@gmail.comantlilja <liljaanton2001@gmail.com> 2024-09-01 14:43:30+02:00
committergravatar for liljaanton2001@gmail.comantlilja <liljaanton2001@gmail.com> 2024-09-01 14:43:30+02:00
log76908da3ac2f4ba64a80d6618211e7390995c00e
tree8ead7b3d0f0e20405edb40f0127c8848e070f867
parent7cb87c14fe593b60b7034f12d2efd927309a0b96

LLVM: Set module flag behaviors to match what LLVM and clang does


1 files changed, 8 insertions(+), 5 deletions(-)

src/codegen/llvm.zig+8-5
......@@ -1102,12 +1102,15 @@ pub const Object = struct {
11021102 var module_flags = try std.ArrayList(Builder.Metadata).initCapacity(o.gpa, 6);
11031103 defer module_flags.deinit();
11041104
1105 const behavior_error = try o.builder.metadataConstant(try o.builder.intConst(.i32, 1));
11051106 const behavior_warning = try o.builder.metadataConstant(try o.builder.intConst(.i32, 2));
1107 const behavior_max = try o.builder.metadataConstant(try o.builder.intConst(.i32, 7));
1108 const behavior_min = try o.builder.metadataConstant(try o.builder.intConst(.i32, 8));
11061109
11071110 const large_pic = target_util.usesLargePIC(comp.root_mod.resolved_target.result);
11081111 if (comp.root_mod.pic) {
11091112 module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
1110 behavior_warning,
1113 behavior_min,
11111114 try o.builder.metadataString("PIC Level"),
11121115 try o.builder.metadataConstant(try o.builder.intConst(.i32, @as(i32, if (large_pic) 2 else 1))),
11131116 ));
......@@ -1115,7 +1118,7 @@ pub const Object = struct {
11151118
11161119 if (comp.config.pie) {
11171120 module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
1118 behavior_warning,
1121 behavior_max,
11191122 try o.builder.metadataString("PIE Level"),
11201123 try o.builder.metadataConstant(try o.builder.intConst(.i32, @as(i32, if (large_pic) 2 else 1))),
11211124 ));
......@@ -1123,7 +1126,7 @@ pub const Object = struct {
11231126
11241127 if (comp.root_mod.code_model != .default) {
11251128 module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
1126 behavior_warning,
1129 behavior_error,
11271130 try o.builder.metadataString("Code Model"),
11281131 try o.builder.metadataConstant(try o.builder.intConst(.i32, @as(i32, switch (comp.root_mod.code_model) {
11291132 .tiny => 0,
......@@ -1147,14 +1150,14 @@ pub const Object = struct {
11471150 .strip => unreachable,
11481151 .dwarf => |f| {
11491152 module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
1150 behavior_warning,
1153 behavior_max,
11511154 try o.builder.metadataString("Dwarf Version"),
11521155 try o.builder.metadataConstant(try o.builder.intConst(.i32, 4)),
11531156 ));
11541157
11551158 if (f == .@"64") {
11561159 module_flags.appendAssumeCapacity(try o.builder.metadataModuleFlag(
1157 behavior_warning,
1160 behavior_max,
11581161 try o.builder.metadataString("DWARF64"),
11591162 try o.builder.metadataConstant(.@"1"),
11601163 ));