From fe67ac9631bdd0ce07e163af7ac2109ab814a1c6 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Tue, 16 Jul 2013 22:47:02 -0400 Subject: [PATCH] Bug 389578 - __sync_bool_compare_and_swap and __sync_val_compare_and_swap buitlins not recognized by codan Change-Id: If72c0fcc631305eb6fd9251658f40e930beb48a0 Signed-off-by: Nathan Ridge Reviewed-on: https://git.eclipse.org/r/14610 Reviewed-by: Sergey Prigogin IP-Clean: Sergey Prigogin Tested-by: Sergey Prigogin --- .../cdt/core/parser/tests/ast2/AST2CPPTests.java | 10 ++++++++++ .../core/dom/parser/GCCBuiltinSymbolProvider.java | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index f52ecf91b20..7f95fd9038e 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -10312,4 +10312,14 @@ public class AST2CPPTests extends AST2TestBase { ICPPClassType privateNestedClass = bh.assertNonProblem("privateNestedClass"); assertVisibility(ICPPClassType.v_private, aClass.getVisibility(privateNestedClass)); } + + // int main() { + // int i = 0; + // __sync_bool_compare_and_swap(& i, 0, 1); + // __sync_val_compare_and_swap(&i, 1, 2); + // __sync_synchronize(); + // } + public void testGNUSyncBuiltins_bug389578() throws Exception { + parseAndCheckBindings(getAboveComment(), CPP, true); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/GCCBuiltinSymbolProvider.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/GCCBuiltinSymbolProvider.java index ff0cd40e2d8..e594c3f1810 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/GCCBuiltinSymbolProvider.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/GCCBuiltinSymbolProvider.java @@ -133,7 +133,9 @@ public class GCCBuiltinSymbolProvider implements IBuiltinBindingsProvider { function(type, "__sync_xor_and_fetch", typePtr, type, "..."); function(type, "__sync_nand_and_fetch", typePtr, type, "..."); function(type, "__sync_lock_test_and_set", typePtr, type, "..."); - function(type, "__sync_lock_release", typePtr, "..."); + function(type, "__sync_val_compare_and_swap", typePtr, type, type, "..."); + function("bool", "__sync_bool_compare_and_swap", typePtr, type, type, "..."); + function("void", "__sync_lock_release", typePtr, "..."); } function("void", "__sync_synchronize");