From 0395060a7dcf98c5f5a65103f6aaa71d6b862259 Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Date: Tue, 10 Mar 2020 08:26:53 -0700
Subject: [PATCH] gentypes/genmodes: Do not use __LINE__ for maintaining
 reproducibility

Inserting line numbers into generated code means its not always reproducible wth
differing versions of host gcc. Void the issue by not adding these.

Upstream-Status: Inappropriate [OE Reproducibility specific]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 gcc/gengtype.c |  6 +++---
 gcc/genmodes.c | 32 ++++++++++++++++----------------
 2 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/gcc/gengtype.c b/gcc/gengtype.c
index 981577481af..d5700fff401 100644
--- a/gcc/gengtype.c
+++ b/gcc/gengtype.c
@@ -991,7 +991,7 @@ create_field_at (pair_p next, type_p type, const char *name, options_p opt,
 /* Create a fake field with the given type and name.  NEXT is the next
    field in the chain.  */
 #define create_field(next,type,name) \
-    create_field_all (next,type,name, 0, this_file, __LINE__)
+    create_field_all (next,type,name, 0, this_file, 0)
 
 /* Like create_field, but the field is only valid when condition COND
    is true.  */
@@ -1024,7 +1024,7 @@ create_optional_field_ (pair_p next, type_p type, const char *name,
 }
 
 #define create_optional_field(next,type,name,cond)	\
-       create_optional_field_(next,type,name,cond,__LINE__)
+       create_optional_field_(next,type,name,cond,0)
 
 /* Reverse a linked list of 'struct pair's in place.  */
 pair_p
@@ -5187,7 +5187,7 @@ main (int argc, char **argv)
       /* These types are set up with #define or else outside of where
          we can see them.  We should initialize them before calling
          read_input_list.  */
-#define POS_HERE(Call) do { pos.file = this_file; pos.line = __LINE__; \
+#define POS_HERE(Call) do { pos.file = this_file; pos.line = 0; \
 	Call;} while (0)
       POS_HERE (do_scalar_typedef ("CUMULATIVE_ARGS", &pos));
       POS_HERE (do_scalar_typedef ("REAL_VALUE_TYPE", &pos));
diff --git a/gcc/genmodes.c b/gcc/genmodes.c
index bd78310ea24..dbd02c51a4c 100644
--- a/gcc/genmodes.c
+++ b/gcc/genmodes.c
@@ -430,7 +430,7 @@ complete_all_modes (void)
 }
 
 /* For each mode in class CLASS, construct a corresponding complex mode.  */
-#define COMPLEX_MODES(C) make_complex_modes (MODE_##C, __FILE__, __LINE__)
+#define COMPLEX_MODES(C) make_complex_modes (MODE_##C, __FILE__, 0)
 static void
 make_complex_modes (enum mode_class cl,
 		    const char *file, unsigned int line)
@@ -489,7 +489,7 @@ make_complex_modes (enum mode_class cl,
    having as many components as necessary.  ORDER is the sorting order
    of the mode, with smaller numbers indicating a higher priority.  */
 #define VECTOR_MODES_WITH_PREFIX(PREFIX, C, W, ORDER) \
-  make_vector_modes (MODE_##C, #PREFIX, W, ORDER, __FILE__, __LINE__)
+  make_vector_modes (MODE_##C, #PREFIX, W, ORDER, __FILE__, 0)
 #define VECTOR_MODES(C, W) VECTOR_MODES_WITH_PREFIX (V, C, W, 0)
 static void ATTRIBUTE_UNUSED
 make_vector_modes (enum mode_class cl, const char *prefix, unsigned int width,
@@ -541,7 +541,7 @@ make_vector_modes (enum mode_class cl, const char *prefix, unsigned int width,
 /* Create a vector of booleans called NAME with COUNT elements and
    BYTESIZE bytes in total.  */
 #define VECTOR_BOOL_MODE(NAME, COUNT, BYTESIZE) \
-  make_vector_bool_mode (#NAME, COUNT, BYTESIZE, __FILE__, __LINE__)
+  make_vector_bool_mode (#NAME, COUNT, BYTESIZE, __FILE__, 0)
 static void ATTRIBUTE_UNUSED
 make_vector_bool_mode (const char *name, unsigned int count,
 		       unsigned int bytesize, const char *file,
@@ -563,7 +563,7 @@ make_vector_bool_mode (const char *name, unsigned int count,
 /* Input.  */
 
 #define _SPECIAL_MODE(C, N) \
-  make_special_mode (MODE_##C, #N, __FILE__, __LINE__)
+  make_special_mode (MODE_##C, #N, __FILE__, 0)
 #define RANDOM_MODE(N) _SPECIAL_MODE (RANDOM, N)
 #define CC_MODE(N) _SPECIAL_MODE (CC, N)
 
@@ -576,7 +576,7 @@ make_special_mode (enum mode_class cl, const char *name,
 
 #define INT_MODE(N, Y) FRACTIONAL_INT_MODE (N, -1U, Y)
 #define FRACTIONAL_INT_MODE(N, B, Y) \
-  make_int_mode (#N, B, Y, __FILE__, __LINE__)
+  make_int_mode (#N, B, Y, __FILE__, 0)
 
 static void
 make_int_mode (const char *name,
@@ -589,16 +589,16 @@ make_int_mode (const char *name,
 }
 
 #define FRACT_MODE(N, Y, F) \
-	make_fixed_point_mode (MODE_FRACT, #N, Y, 0, F, __FILE__, __LINE__)
+	make_fixed_point_mode (MODE_FRACT, #N, Y, 0, F, __FILE__, 0)
 
 #define UFRACT_MODE(N, Y, F) \
-	make_fixed_point_mode (MODE_UFRACT, #N, Y, 0, F, __FILE__, __LINE__)
+	make_fixed_point_mode (MODE_UFRACT, #N, Y, 0, F, __FILE__, 0)
 
 #define ACCUM_MODE(N, Y, I, F) \
-	make_fixed_point_mode (MODE_ACCUM, #N, Y, I, F, __FILE__, __LINE__)
+	make_fixed_point_mode (MODE_ACCUM, #N, Y, I, F, __FILE__, 0)
 
 #define UACCUM_MODE(N, Y, I, F) \
-	make_fixed_point_mode (MODE_UACCUM, #N, Y, I, F, __FILE__, __LINE__)
+	make_fixed_point_mode (MODE_UACCUM, #N, Y, I, F, __FILE__, 0)
 
 /* Create a fixed-point mode by setting CL, NAME, BYTESIZE, IBIT, FBIT,
    FILE, and LINE.  */
@@ -619,7 +619,7 @@ make_fixed_point_mode (enum mode_class cl,
 
 #define FLOAT_MODE(N, Y, F)             FRACTIONAL_FLOAT_MODE (N, -1U, Y, F)
 #define FRACTIONAL_FLOAT_MODE(N, B, Y, F) \
-  make_float_mode (#N, B, Y, #F, __FILE__, __LINE__)
+  make_float_mode (#N, B, Y, #F, __FILE__, 0)
 
 static void
 make_float_mode (const char *name,
@@ -636,7 +636,7 @@ make_float_mode (const char *name,
 #define DECIMAL_FLOAT_MODE(N, Y, F)	\
 	FRACTIONAL_DECIMAL_FLOAT_MODE (N, -1U, Y, F)
 #define FRACTIONAL_DECIMAL_FLOAT_MODE(N, B, Y, F)	\
-  make_decimal_float_mode (#N, B, Y, #F, __FILE__, __LINE__)
+  make_decimal_float_mode (#N, B, Y, #F, __FILE__, 0)
 
 static void
 make_decimal_float_mode (const char *name,
@@ -651,7 +651,7 @@ make_decimal_float_mode (const char *name,
 }
 
 #define RESET_FLOAT_FORMAT(N, F) \
-  reset_float_format (#N, #F, __FILE__, __LINE__)
+  reset_float_format (#N, #F, __FILE__, 0)
 static void ATTRIBUTE_UNUSED
 reset_float_format (const char *name, const char *format,
 		    const char *file, unsigned int line)
@@ -672,7 +672,7 @@ reset_float_format (const char *name, const char *format,
 
 /* __intN support.  */
 #define INT_N(M,PREC)				\
-  make_int_n (#M, PREC, __FILE__, __LINE__)
+  make_int_n (#M, PREC, __FILE__, 0)
 static void ATTRIBUTE_UNUSED
 make_int_n (const char *m, int bitsize,
             const char *file, unsigned int line)
@@ -701,7 +701,7 @@ make_int_n (const char *m, int bitsize,
 /* Partial integer modes are specified by relation to a full integer
    mode.  */
 #define PARTIAL_INT_MODE(M,PREC,NAME)				\
-  make_partial_integer_mode (#M, #NAME, PREC, __FILE__, __LINE__)
+  make_partial_integer_mode (#M, #NAME, PREC, __FILE__, 0)
 static void ATTRIBUTE_UNUSED
 make_partial_integer_mode (const char *base, const char *name,
 			   unsigned int precision,
@@ -728,7 +728,7 @@ make_partial_integer_mode (const char *base, const char *name,
 /* A single vector mode can be specified by naming its component
    mode and the number of components.  */
 #define VECTOR_MODE(C, M, N) \
-  make_vector_mode (MODE_##C, #M, N, __FILE__, __LINE__);
+  make_vector_mode (MODE_##C, #M, N, __FILE__, 0);
 static void ATTRIBUTE_UNUSED
 make_vector_mode (enum mode_class bclass,
 		  const char *base,
@@ -771,7 +771,7 @@ make_vector_mode (enum mode_class bclass,
 
 /* Adjustability.  */
 #define _ADD_ADJUST(A, M, X, C1, C2) \
-  new_adjust (#M, &adj_##A, #A, #X, MODE_##C1, MODE_##C2, __FILE__, __LINE__)
+  new_adjust (#M, &adj_##A, #A, #X, MODE_##C1, MODE_##C2, __FILE__, 0)
 
 #define ADJUST_NUNITS(M, X)    _ADD_ADJUST (nunits, M, X, RANDOM, RANDOM)
 #define ADJUST_BYTESIZE(M, X)  _ADD_ADJUST (bytesize, M, X, RANDOM, RANDOM)
