aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPekka Jääskeläinen <pekka.jaaskelainen@parmance.com>2018-05-04 17:58:38 +0000
committerPekka Jääskeläinen <visit0r@gcc.gnu.org>2018-05-04 17:58:38 +0000
commit77c42d456e28d04b684a1774264a2d7be816676b (patch)
tree6c3f279e9989f59aa9fdbc6f925a10346b438171
parent1c72513315c93a968acfdc5000b2f237480dbcba (diff)
downloadgcc-77c42d456e28d04b684a1774264a2d7be816676b.zip
gcc-77c42d456e28d04b684a1774264a2d7be816676b.tar.gz
gcc-77c42d456e28d04b684a1774264a2d7be816676b.tar.bz2
[BRIGFE] allow controlling strict aliasing from cmd line
From-SVN: r259948
-rw-r--r--gcc/brig/ChangeLog5
-rw-r--r--gcc/brig/brig-lang.c12
2 files changed, 14 insertions, 3 deletions
diff --git a/gcc/brig/ChangeLog b/gcc/brig/ChangeLog
index c68c8dd..40a7156 100644
--- a/gcc/brig/ChangeLog
+++ b/gcc/brig/ChangeLog
@@ -1,5 +1,10 @@
2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
+ * brig/brig-lang.c: Allow controlling strict aliasing from
+ cmd line.
+
+2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
+
* brig/brigfrontend/brig-code-entry-handler.cc: The modulo in
ID computation should not be needed.
diff --git a/gcc/brig/brig-lang.c b/gcc/brig/brig-lang.c
index 030d76a..58b98fd 100644
--- a/gcc/brig/brig-lang.c
+++ b/gcc/brig/brig-lang.c
@@ -167,9 +167,15 @@ brig_langhook_post_options (const char **pfilename ATTRIBUTE_UNUSED)
if (flag_excess_precision_cmdline == EXCESS_PRECISION_DEFAULT)
flag_excess_precision_cmdline = EXCESS_PRECISION_STANDARD;
- /* gccbrig casts pointers around like crazy, TBAA produces
- broken code if not force disabling it. */
- flag_strict_aliasing = 0;
+ /* gccbrig casts pointers around like crazy, TBAA might produce broken
+ code if not disabling it by default. Some PRM conformance tests such
+ as prm/core/memory/ordinary/ld/ld_u16 fail currently with strict
+ aliasing (to fix). It can be enabled from the command line for cases
+ that are known not to break the C style aliasing requirements. */
+ if (!global_options_set.x_flag_strict_aliasing)
+ flag_strict_aliasing = 0;
+ else
+ flag_strict_aliasing = global_options.x_flag_strict_aliasing;
/* Returning false means that the backend should be used. */
return false;