aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2022-04-09 21:22:58 +0200
committerJan Hubicka <jh@suse.cz>2022-04-09 21:22:58 +0200
commit4943b75e9f06f0b64ed541430bb7fbccf55fc552 (patch)
tree1ec24df49da937dab46cb763acbe5889a3105151
parentaabb9a261ef060cf24fd626713f1d7d9df81aa57 (diff)
downloadgcc-4943b75e9f06f0b64ed541430bb7fbccf55fc552.zip
gcc-4943b75e9f06f0b64ed541430bb7fbccf55fc552.tar.gz
gcc-4943b75e9f06f0b64ed541430bb7fbccf55fc552.tar.bz2
Update semantic_interposition flag at analysis time
This patch solves problem with FE first finalizing function and then adding -fno-semantic-interposition flag (by parsing optimization attribute). gcc/ChangeLog: 2022-04-09 Jan Hubicka <hubicka@ucw.cz> PR ipa/103376 * cgraphunit.cc (cgraph_node::analyze): update semantic_interposition flag. gcc/testsuite/ChangeLog: 2022-04-09 Jan Hubicka <hubicka@ucw.cz> PR ipa/103376 * gcc.c-torture/compile/pr103376.c: New test.
-rw-r--r--gcc/cgraphunit.cc1
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr103376.c9
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/cgraphunit.cc b/gcc/cgraphunit.cc
index 01f4e28..bc3dc75 100644
--- a/gcc/cgraphunit.cc
+++ b/gcc/cgraphunit.cc
@@ -621,6 +621,7 @@ cgraph_node::analyze (void)
tree decl = this->decl;
location_t saved_loc = input_location;
input_location = DECL_SOURCE_LOCATION (decl);
+ semantic_interposition = opt_for_fn (decl, flag_semantic_interposition);
if (thunk)
{
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr103376.c b/gcc/testsuite/gcc.c-torture/compile/pr103376.c
new file mode 100644
index 0000000..8c14c3d
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr103376.c
@@ -0,0 +1,9 @@
+/* { dg-additional-options "-Ofast" } */
+__attribute__ ((optimize ("no-associative-math"))) double
+fn3 (double h, double l)
+{
+ return h + l;
+}
+
+double fn3 (double, double) __attribute__ ((optimize ("O2,no-associative-math")));
+