Benedikt,
We normally prefix the first line of the git commit message with a
prefix to indicate the module effected. So in this case, you might use
"amd: Fix missing..." or "r600: Fix missing". You can use git log to
get an idea.
-Brian
On 06/11/2017 11:17 AM, Benedikt Schemmer wrote:
This series aims to fix hundreds of missing initializer warnings in generated
header files
when compiling with -Wextra
V1: Fix the old fashioned way by adding 0s where needed
V2: switch to designated initializers (Emil), didnt send
V3: add some layout so its easier to read and create a new version for vk that
just uses {0} instead of {0, 0, 0, 0, 0} (same thing, less zeros)
---
Because this generated such unexpected controversy and out of curiosity i wrote
a little
test program to show the problem. Compile with -Wextra.
There is no init code generated for any variant on any compiler i tested.
gcc version 5.4.1 20170304 (Ubuntu 5.4.1-8ubuntu1)
gcc version 6.3.0 20170406 (Ubuntu 6.3.0-12ubuntu2)
gcc version 7.0.1 20170407 (experimental) [trunk revision 246759] (Ubuntu
7-20170407-0ubuntu2)
clang version 4.0.0-1ubuntu1 (tags/RELEASE_400/rc1)
clang version 5.0.0-svn305158-0~z~padoka0 (trunk)
MSVC Compiler Version 19.00.24210
---
struct s {
int a;
int b;
int c;
int d;
int e;
};
static const struct s str1 = {}; // gcc 5/6/7, clang 4/5 accept this
without warning, MSVC2013 doesnt compile
(not Standard, will generate a warning with -Wpendantic, much prettier however)
static const struct s str2 = {0}; // clang 4/5 generate a warning here
(although ANSI Standard)
static const struct s str3 = {0,}; // clang 4/5 generate a warning here
(although ANSI Standard)
static const struct s str4 = {1,2,3}; // gcc 5/6/7, clang 4/5 generate a
warning here
static const struct s str5 = {1,2,3,}; // gcc 5/6/7, clang 4/5 generate a
warning here
static const struct s str6 = {1,2,3,0,0}; // this is fine with all compilers
static const struct s str7 = {.a = 1, .b = 2, .c = 3}; // this might not compile
on MSVC <2013 but couldnt test
int main() {
return 0;
}
---
This is what Rust does:
---
#![allow(unused_variables)]
#![allow(dead_code)]
#[derive(Default)]
struct Test {
a: i32,
b: i32,
c: i32,
d: i32,
e: i32
}
fn main() {
//all of these wont work
// let t1 = Test {};
// let t2 = Test {0};
// let t3 = Test {0,};
// let t3b= Test {..}; would be very cool
// let t4 = Test {1,2,3};
// let t5 = Test {1,2,3,};
// let t6 = Test {1,2,3,0,0};
// let t7 = Test {a: 1, b: 1};
// let t8 = Test {a: 1, b: 1, ..}; would be cool
//only this is legal in rust
let t9: Test = Default::default();
let t10 = Test {..Default::default()};
let t11 = Test {a: 1, b: 1, ..Default::default()};
let t12 = Test {a: 1, b: 1, c: 1, d: 1, e: 1};
println!("Hello, world!");
}
---
So in the end I followed Emils suggestion of designated initializers for
partial initialization,
to make it explicit and get rid of the warnings.
Please kindly review and push.
Thanks,
Benedikt
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev