Skip to content
  • Erich Keane's avatar
    Correct 'target' default behavior on redecl, allow forward declaration. · 7304f0a6
    Erich Keane authored
    Declarations without the attribute were disallowed because it would be
    ambiguous which 'target' it was supposed to be on.  For example:
    
    void ___attribute__((target("v1"))) foo();
    void foo(); // Redecl of above, or fwd decl of below?
    void ___attribute__((target("v2"))) foo();
    
    However, a first declaration doesn't have that problem, and erroring
    prevents it from working in cases where the forward declaration is
    useful.
    
    Additionally, a forward declaration of target==default wouldn't properly
    cause multiversioning, so this patch fixes that.
    
    The patch was not split since the 'default' fix would require
    implementing the same check for that case, followed by undoing the same
    change for the fwd-decl implementation.
    
    Change-Id: I66f2c5bc2477bcd3f7544b9c16c83ece257077b0
    llvm-svn: 347805
    7304f0a6
Loading