[pypy-commit] stmgc c7-refactor: Workaround for another llvm bug

arigo noreply at buildbot.pypy.org
Wed Feb 26 15:08:29 CET 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: c7-refactor
Changeset: r871:35baad3a75f6
Date: 2014-02-26 15:08 +0100
http://bitbucket.org/pypy/stmgc/changeset/35baad3a75f6/

Log:	Workaround for another llvm bug

diff --git a/c7/stmgc.h b/c7/stmgc.h
--- a/c7/stmgc.h
+++ b/c7/stmgc.h
@@ -213,11 +213,15 @@
    Use the macro STM_START_TRANSACTION() to start a transaction that
    can be restarted using the 'jmpbuf' (a local variable of type
    stm_jmpbuf_t). */
-#define STM_START_TRANSACTION(tl, jmpbuf)  ({           \
-    int _restart = __builtin_setjmp(jmpbuf);            \
-    _stm_start_transaction(tl, &jmpbuf);                \
-   _restart;                                            \
+#define STM_START_TRANSACTION(tl, jmpbuf)  ({                   \
+    int _restart = __builtin_setjmp(jmpbuf) ? _stm_duck() : 0;  \
+    _stm_start_transaction(tl, &jmpbuf);                        \
+   _restart;                                                    \
 })
+static inline int _stm_duck(void) {
+    asm("/* workaround for a llvm bug */");
+    return 1;
+}
 
 /* Start an inevitable transaction, if it's going to return from the
    current function immediately. */


More information about the pypy-commit mailing list