+2018-09-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Return false
+ if the call takes a static chain.
+
2018-09-21 Martin Liska <mliska@suse.cz>
* auto-profile.c (autofdo_source_profile::read): Do not
{
tree fntype;
+ /* The sibcall epilogue may clobber the static chain register.
+ ??? We could work harder and avoid that, but it's probably
+ not worth the hassle in practice. */
+ if (CALL_EXPR_STATIC_CHAIN (exp))
+ return false;
+
if (decl)
fntype = TREE_TYPE (decl);
else
+2018-09-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc.dg/nested-func-11.c: New test.
+
+ * lib/target-supports.exp (check_effective_target_tls_runtime): Make
+ more robust and remove target-specific handling.
+
2018-09-21 Eric Botcazou <ebotcazou@adacore.com>
* gcc.c-torture/execute/20180921-1.c: New test.
--- /dev/null
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-omit-frame-pointer" } */
+
+int __attribute__((noipa)) foo (int i)
+{
+ int a;
+
+ void __attribute__((noipa)) nested2 (int i)
+ {
+ a = i;
+ }
+
+ void __attribute__((noipa)) nested1 (int i)
+ {
+ int b[32];
+
+ for (int j = 0; j < 32; j++)
+ b[j] = i + j;
+
+ nested2 (b[i]);
+ }
+
+ nested1 (i);
+
+ return a;
+}
+
+int main (void)
+{
+ if (foo (4) != 8)
+ __builtin_abort ();
+
+ return 0;
+}
# Return 1 if TLS executables can run correctly, 0 otherwise.
proc check_effective_target_tls_runtime {} {
- # The runtime does not have TLS support, but just
- # running the test below is insufficient to show this.
- if { [istarget msp430-*-*] || [istarget visium-*-*] } {
- return 0
- }
return [check_runtime tls_runtime {
- __thread int thr = 0;
+ __thread int thr __attribute__((tls_model("global-dynamic"))) = 0;
int main (void) { return thr; }
} [add_options_for_tls ""]]
}